如何使用Firebug扩展调试Greasemonkey脚本?

Wol*_*red 49 debugging firebug greasemonkey

我没有找到使用Firebug扩展调试Greasemonkey脚本的方法.

有谁知道如何做到这一点 ?

谢谢.

Bro*_*ams 24

Updatier: Mene + Shuman修复程序现在被Firefox 30和Firebug 2破坏了.Firefox 31 可能会提供解决方法(将进行调查).在此期间,请使用下面列出的"常规解决方法策略".


更新: 这个答案现在已经过时了.

如果打开about:config
设置extensions.firebug.filterSystemURLsfalse
then ,则可以使用Firebug调试Greasemonkey脚本,就像其他任何脚本一样.

无论@grant模式如何,这都有效.

在舒曼的帮助下,梅恩的回答.



老答案:

因为Greasemonkey在沙箱中运行,Firebug无法看到它.没有简单的方法可以解决这个问题.

一般的解决方法策略:

  1. GM_首先在Firebug的JavaScript控制台中测试不使用函数的GM脚本的所有部分.最大限度地减少GM_功能的使用,根本不使用GM_log().

  2. Firebug的console所有功能都可以在GM脚本中运行.


小智 8

var e = document.createElement("script");

e.src = 'http://www.xxxxxxxx.com/yyyyyyyy.js';
e.type="text/javascript";
document.getElementsByTagName("head")[0].appendChild(e);
Run Code Online (Sandbox Code Playgroud)

你可以将它添加到xxx.user.js,并将其安装在greasemonkey中.

然后,您可以根据需要调试您的js.


Men*_*ene 8

当前的Firefox和Firebug现在可以调试当前的Greasemonkey脚本,就像任何其他JavaScript一样.只需*.user.js在下拉菜单中找到您的脚本即可.控制台也可以工作.

这至少适用于Firefox 28.0和Firebug 1.12.7; 我没有尝试过早期版本.

限制案例调试的屏幕截图


注意:为了使其工作,您可能必须设置extensions.firebug.filterSystemURLs为false.请参阅Firebug中的"分析Greasemonkey脚本"错误跟踪器. (感谢舒曼)

  • 刚刚我的firefox自动更新到30.0和firebug到2.0,我再也无法调试GM.在我弄明白为什么之前,我必须将萤火虫降级到1.12.8,然后才行.不知道如何让它在firebug中运行[2.0](http://www.softwareishard.com/blog/firebug/firebug-2-support-for-dynamic-scripts/) (7认同)
  • @BrockAdams holycr*p终于通过在`about:config`中将`extensions.firebug.filterSystemURLs`设置为`false`来实现它,请参阅[this](https://code.google.com/p/fbug/issues/细节?ID = 83) (2认同)

Hju*_*lle 5

这里没有其他解决方案对我有用,但是Jan Odvarko的关于如何调试Firefox扩展的答案也适用于GreaseMonkey脚本:

在Firefox 19或更高版本上,可以在浏览器本身上使用内置的JS调试器。转到about:config并设置以下两个首选项:

devtools.chrome.enabled: true
devtools.debugger.remote-enabled: true
Run Code Online (Sandbox Code Playgroud)

重新启动浏览器后,可以通过工具> Web开发人员>浏览器工具箱访问浏览器调试器。

(请注意,您必须接受传入的连接)

详情请访问:https//developer.mozilla.org/zh-CN/docs/Mozilla/Debugging/Debugging_JavaScript#JavaScript_Debugger

然后只搜索用户脚本的名称并开始调试。


Ann*_*ych 5

如前所述,可以使用本机Firefox调试器完成此操作。以下是现代版本Firefox的说明。

在中设置以下首选项about:config

 devtools.chrome.enabled: true
 devtools.debugger.remote-enabled: true
 devtools.debugger.prompt-connection: false
Run Code Online (Sandbox Code Playgroud)

通过工具打开全局脚本调试器窗口 ?网站开发人员浏览器工具箱调试器(或Ctrl+ Shift+ Alt+ I)。

搜索用户脚本的名称并开始调试