从JavaScript登录到Firefox错误控制台

Tor*_*rek 52 javascript debugging firefox

是否可以从网页中运行的JavaScript代码向Firefox的内置错误控制台添加消息?

我知道我有Firebug,它提供了一个console对象和它自己的错误控制台,但我之前正在寻找一个快速修复,但找不到任何东西.

我想可能根本不可能防止恶意网页发送垃圾邮件?

小智 46

如果您定义一个检查window.console是否存在的全局函数,您可以使用Firebug进行跟踪,并且仍可以与其他浏览器一起使用和/或如果您关闭Firebug的控制台跟踪:

debug = function (log_txt) {
    if (typeof window.console != 'undefined') {
        console.log(log_txt);
    }
}

debug("foo!");
Run Code Online (Sandbox Code Playgroud)

  • 没有必要包装console.log函数.通过包装它您将失去格式化功能.只需将其分配给调试函数:`var debug = function(){}; if(window.console!= undefined){debug = console.log; }`.现在你也可以这样做:`debug("%s","a")` (16认同)

Fab*_*ani 33

是的,你可以= P.

function log(param){
    setTimeout(function(){
        throw new Error("Debug: " + param)
    },0)
}

//Simple Test:
alert(1)
log('This is my message to the error log -_-')
alert(2)
log('I can do this forever, does not break')
alert(3)
Run Code Online (Sandbox Code Playgroud)

更新到实际功能

这是一个简单的黑客,只是为了好玩.

  • @nornagon是的,我明白了,它会更好用一个函数,但我这样做是为了兼容IE坏setTimeout() (4认同)

Ben*_*ank 32

您无法直接从不受信任的JavaScript(例如来自页面的脚本)写入控制台.但是,即使安装Firebug对您没有吸引力,我也建议您查看Firebug Lite,它不需要安装到浏览器中(事实上,它甚至不需要Firefox).这是一个可以包含在任何网页中的脚本(甚至是动态的),它将为您提供一些基本的Firebug功能(例如console.log()).


ski*_*age 14

即使Firebug 1.6X.0b1已启用并打开,Firefox 4 beta 6中也未定义window.console,可能是因为其他人讨论的权限问题.但是,Firefox 4有一个新的工具> Web控制台,如果这是打开的,你有一个window.console对象,页面上不受信任的JavaScript代码可以使用console.log().Web控制台不断变化(请参阅https://wiki.mozilla.org/Firefox/Projects/Console),您可能需要在about:config,YMMV中更改名为devtools.*的设置.


Bri*_*ell 6

我只是安装Firebug并使用console.log.但是,如果你不能这样做,你总是会抛出一个错误:

throw "foobar";
throw new Error("bazquux");
Run Code Online (Sandbox Code Playgroud)

当然,这会让你脱离你当前正在执行的代码,所以你不能用它来进行详细的日志记录,但如果你可以解决这个问题,我认为这是从盒子里取出一些东西的唯一方法.

  • 如果你想要一个非阻塞错误消息(例如,监视循环中的变量),请使用setTimeout("throw new Error('Wheeeeeeee!')",0); (2认同)
  • bazquux完全是我想要通知自己的错误类型 (2认同)