【问题标题】:GM_log and other GM functions don't work in Greasemonkey scriptsGM_log 和其他 GM 函数在 Greasemonkey 脚本中不起作用
【发布时间】:2012-05-16 14:14:52
【问题描述】:

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

GM_log("Hello World");

这似乎不起作用,至少它没有在我的 firebug 控制台中产生任何输出。
与其他 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 控制台中显示?

【问题讨论】:

    标签: logging firebug greasemonkey


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你从哪里得到GM_wait?那不是a GM function;有些人只是将他们的临时功能命名为。请注意GM version 0.9.19 broke a lot of timing functionality,但这已在版本 0.9.20 中修复。

      至于GM_log(),这可行,但它并不总是将其信息放在合理的位置。在更高版本的 Greasemonkey 上,GM_log() 写入 Firefox 的错误控制台——您可以通过按 CtrlShiftJ 打开它。
      但是,as Comentarist said,没有充分的理由再使用GM_log。它的功能有限,不能很好地移植。

      现在所有优秀的浏览器都原生支持console.log()(不需要Firebug),但在Firefox 上,这也倾向于to output to Firefox's Error Console

      要使用Firebug's excellent logging functions(值得一看),您目前必须像这样使用unsafeWindow

      unsafeWindow.console.clear ();
      unsafeWindow.console.log ("Hello World!");
      

      【讨论】:

        【解决方案3】:

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

        console.log('hello world');
        

        http://wiki.greasespot.net/GM_log

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

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

        【讨论】:

        • 谢谢。它与 console.log 一起工作。我还用“普通”javascript 函数替换了 GM_wait。奇怪,其他 GM 功能仍然可以正常工作(GM_xmlhttpRequest)。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-06
        • 2012-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多