7

我在 Firefox 中创建了一个“Hello World”Greasemonkey 脚本,它只包含一行代码:

GM_log("Hello World");

这似乎不起作用,至少它没有在我的萤火虫控制台中产生任何输出。
与其他 GM_... 功能相同,如 GM_wait

当我更换:

GM_log("Hello World");

和:

alert("Hello World")

它起作用了(所以脚本头不是问题)。

我还将以下about:config选项设置为 true:

  • javascript.options.showInConsole
  • extensions.firebug.showChromeErrors
  • extensions.firebug.showChromeMessages

是否有一些其他设置需要更改以使 GM_... 函数在 Greasemonkey 脚本中工作?

我是否必须更改 GM_log 消息的其他 firebug 设置才能在 firebug 控制台中显示?

4

3 回答 3

5

这样做的原因是一个新的特殊元数据块命令@grant,在 GM 1.0 中添加。如果您需要 GM_log 工作,则必须将此行添加到您的脚本 Metadata Block: "// @grant GM_log" 中,否则它将无法工作。您可以在http://wiki.greasespot.net/@grant阅读有关此功能的信息。

于 2013-05-20T11:55:18.687 回答
3

你从哪里得到的GM_wait?那不是GM功能;有些人只是将他们的临时功能命名为。请注意GM 版本 0.9.19 破坏了很多计时功能,但这在 0.9.20 版本中已修复。

至于GM_log(),这行得通,但它并不总是把它的信息放在一个合理的位置。在更高版本的 Greasemonkey 上,GM_log()写入 Firefox 的错误控制台——您可以通过按打开它CtrlShiftJ
但是,正如评论家所说,没有充分的理由再使用GM_log了。它的功能有限,不能很好地移植。

现在所有好的浏览器都支持原生console.log()(不需要 Firebug),但是在 Firefox 上,这也倾向于输出到 Firefox 的错误控制台

要使用Firebug 出色的日志记录功能(值得一看),您目前必须unsafeWindow像这样使用:

unsafeWindow.console.clear ();
unsafeWindow.console.log ("Hello World!");
于 2012-05-16T23:57:59.013 回答
1

我建议您忘记 GM_log() 并使用:

console.log('hello world');

http://wiki.greasespot.net/GM_log

就像它说的“因为 GM_log 一次只会显示一个字符串,所以安装了 Firebug 的用户可能更喜欢使用 console.log。”

但是关于你的问题,我说不出为什么。

于 2012-05-16T17:52:46.167 回答