在Firefox,Greasemonkey脚本中使用时,console.log不起作用

时间:2012-04-13 04:31:27

标签: firefox greasemonkey userscripts

我的用户使用console.log()打印一些信息。

这在Chrome中运行良好,但是当我在Firefox(Greasemonkey)中安装此用户脚本时,Firefox中的Web控制台没有显示任何内容。

我搜索了一个解决方案,有些人建议使用unsafeWindow,但它也没有显示任何输出。此外unsafeWindow不能用于镀铬。我甚至安装了Firebug,但没用。我该如何解决这个问题?

例如,我在Firefox中尝试了这个用户脚本:

// ==UserScript==
// @name        console
// ==UserScript==
console.log("hello");

3 个答案:

答案 0 :(得分:16)

你的意思是当它通过Greasemonkey安装时不起作用,对吧? 不久前,Greasemonkey broke console.log(新!Bug report)。现在,要查看来自Greasemonkey的普通console.log()调用的结果,您需要查看 Firefox的错误控制台,而不是Firebug。

按下以下内容可以看到FF的错误控制台: Ctrl Shift J

,您可以在Chrome和Greasemonkey脚本中使用unsafeWindow.console.log()。 Chrome现在对unsafeWindow的支持有限。

如果您使用unsafeWindow,则可以访问Greasemonkey的全部Firebug's logging functions。 (必须安装Firebug并且它们仍然可能无法在Chrome用户脚本中使用;我暂时没有测试过这种方式。)


在Firefox中,如果未安装Firebug,或者页面未激活,则unsafeWindow.console.log()调用将显示在新的“Web控制台”中( Ctrl < / KBD> ķ)。
您需要在Greasemonkey脚本中使用unsafeWindow

请注意,Firefox目前仅支持console.log()console.info()console.warn()console.error() - 不需要Firebug。

答案 1 :(得分:5)

等一下:如果问题是关于使用Greasemonkey登录控制台(我可以发誓我看到标记),为什么不使用GM_log方法?

// ==UserScript==
// @name          GM_log Example
// @namespace     http://www.example.com/
// ==/UserScript==

GM_log("This is an example of GM_log");

或者我错过了什么?

PS:您还可以在about:config中检查javascript.options.showInConsole。它应该是true

答案 2 :(得分:1)

我发现(使用Chrome / Tampermonkey测试)您需要的是:
window.log("<message goes here>");而非unsafeWindow.console.log("<msg>"); 由于unsafeWindowconsole未定义。试试这个,因为我很确定你应该在以后版本的浏览器中这样做。