Javascript 如何在移动设备上从手机获取console.log输出?

Javascript 如何在移动设备上从手机获取console.log输出?,javascript,android,google-chrome,mobile,Javascript,Android,Google Chrome,Mobile,我在移动设备上做了很多开发工作。有没有办法让js从移动浏览器中访问console.log输出 目前,最好的方法是“挂接”本机控制台并将输出显示为HTML,同时仍允许输出转到本机控制台 您可以非常轻松地实现自己的版本 // Reference to an output container, use 'pre' styling for JSON output var output = document.createElement('pre'); document.body.appendChild(o

我在移动设备上做了很多开发工作。有没有办法让js从移动浏览器中访问console.log输出

目前,最好的方法是“挂接”本机控制台并将输出显示为HTML,同时仍允许输出转到本机控制台

您可以非常轻松地实现自己的版本

// Reference to an output container, use 'pre' styling for JSON output
var output = document.createElement('pre');
document.body.appendChild(output);

// Reference to native method(s)
var oldLog = console.log;

console.log = function( ...items ) {

    // Call native method first
    oldLog.apply(this,items);

    // Use JSON to transform objects, all others display normally
    items.forEach( (item,i)=>{
        items[i] = (typeof item === 'object' ? JSON.stringify(item,null,4) : item);
    });
    output.innerHTML += items.join(' ') + '<br />';

};

// You could even allow Javascript input...
function consoleInput( data ) {
    // Print it to console as typed
    console.log( data + '<br />' );
    try {
        console.log( eval( data ) );
    } catch (e) {
        console.log( e.stack );
    }
}
//引用输出容器,对JSON输出使用“pre”样式
var输出=document.createElement('pre');
document.body.appendChild(输出);
//对本机方法的引用
var oldLog=console.log;
console.log=函数(…项){
//首先调用本机方法
oldLog.apply(此,项);
//使用JSON转换对象,所有其他对象都正常显示
items.forEach((item,i)=>{
items[i]=(typeof item=='object'?JSON.stringify(item,null,4):item);
});
output.innerHTML+=items.join(“”)+'
; }; //您甚至可以允许Javascript输入。。。 功能控制台输入(数据){ //按键入的格式将其打印到控制台 console.log(数据+“
”); 试一试{ 控制台日志(评估(数据)); }捕获(e){ console.log(e.stack); } }
……但与其重新发明轮子,不如尝试几个项目

我个人使用,并一直非常高兴。这很简单,正是你想要和期望的


我最近意识到了这一点,但除了玩他们的演示之外,还没有机会测试它。它实现了更多的开发人员工具,但出于这个原因,对于许多项目来说,这也可能是一种过分的技巧。它感觉不那么轻量级(它的文件大小肯定大得多,甚至缩小了!),如果您想要开发人员工具的广度和强度,最好使用远程调试。我们中的大多数人想要一个移动控制台,他们只是想要快速测试之类的基础知识。

对于Android,我发现这是可行的:

  • 打开Android Studio IDE
  • 在调试模式下连接设备
  • 开放式logcat
  • 在android设备上运行浏览器UI-查看控制台日志输出
  • 下面是logcat中的几个console.log()行:

    [信息:控制台(18)]“100-检查函数参数…”,来源:https://somewhere/util/message_util.js (18) 

    [信息:控制台(18)]“101->输入:AppAuth.onHasAuthFunc”,来源:https://somewhere/util/message_util.js (18) 

    尝试这种方法的想法,感谢,建议:

    “‘挂接’本机控制台”

    ~~~~~~

    此外,还看到其他帖子建议键入:
    about:debug


    。。进入设备浏览器的地址栏。不确定这是否与连接正常工作有关使用

    是目前为止最好的,至少是我试过的。

    将设备连接到工作站并在工作站上使用chrome进行调试最简单:感谢您的快速响应,@admcfajn。我知道如何通过usb或wifi使用chrome桌面devtools,但是,我正在寻找一种从移动设备本身获取console.log输出的方法。我在我的实际手机上做了很多工作,虽然从我碰巧在的任何地方将远程会话和adb隧道传输到我的桌面都很容易,但如果我没有平板电脑,从我所在的任何地方处理远程桌面会话只是为了获取日志输出是不方便的。我在手机上做了很多工作,通常很简单,有时我需要控制台。有些网站提供这样的功能,但我不喜欢把我的代码放到随机人的服务器上。下面是一个例子:。但必须有一种方法可以做到这一点,而不依赖于其他人的服务器。它的措辞有点不同,但这是迄今为止我找到的最好的资源:我听说你可以通过创建一个新书签并在地址字段中添加以下内容来查看源代码:
    javascript:谢谢你,@Marcus!我真的很感谢你花时间给我一个答案。我的问题似乎有些深奥。无论如何,非常感谢这篇文章是的,我只想要你从console.log(特别是)自动枚举对象等获得的基本输出。我自己做了一些“控制台”劫持,但无法使用本机控制台扩展对象。奇怪的是,昨天我发现一个网站就是这么做的,它使用浏览器控制台对象并重定向它的输出。我会检查这个,并发布一个链接到我发现的。谢谢隐马尔可夫模型。。。有趣的方法。然而,这里的想法是独立于其他设备;但是,在没有附加计算机的情况下,是否可以从设备上查看?最好是从浏览器本身。同样,我也看到了一些原生的Android logcat应用程序,但它们的运气并不好。我真希望Chromium的家伙们能像在PC上一样,用一种本地的方式来做这件事。信息就在那里。我们只需要看看。有时你只需要编码,即使你只有手机。(或片剂/片剂)。完全枚举。