我知道firebug无法访问greasemonkey脚本,但我想知道是否有办法将脚本暴露给firebug并设置断点。我希望能够最终逐步完成我正在处理的脚本。
类似的说明:有没有办法测试脚本而不必每次等待4秒才能安装它?
答案 0 :(得分:4)
简单的第一部分:
“在类似的说明中:有没有办法测试脚本而不必每次等待4秒才能安装它?”
是!
确保已安装Greasemonkey 9.0或更高版本。
确保您有使用GM配置的编辑器。您可以在GM选项中设置此选项,或打开 about:config 并设置greasemonkey.editor
,例如D:\Program Files\TextPad\TextPad.exe
,但任何体面的编程编辑器都应该做。
现在通过打开GM的脚本管理器并按相应的 编辑 按钮来编辑脚本。 您的编辑器应该打开并加载正确的文件,并且每次保存文件时,您所做的任何更改都会立即生效。
请注意以@require
指令进行的更改仍然不会生效。也就是说,新文件不会被复制也不会被使用。您仍必须卸载/重新安装才能更改@require
更改。
“我想知道是否有办法将脚本公开给firebug并设置断点。我希望能够最终逐步完成我正在处理的脚本。”
有一个新的附加组件FireBugMonkey可能会有所帮助(我还需要尝试一下)。
关于让Firebug在GM脚本上运行良好的讨论已经持续了4年多。以下是the Greasemonkey-Dev Group上最新/相关的主题。
在不久的将来,无法逐步使用GM_
functions的GM脚本。
您可以通过将代码注入目标页面来解决不使用此类函数的部分代码,然后Firebug可以在其中看到它。
例如,像这样构建代码:
function localMain ()
{
/*--- Put EVERYTHING inside this wrapper, functions and variables.
Call or use nothing else that's defined in the GM script here.
You can use objects in the source page's scope, though.
*/
console.log ("Hiya!");
}
然后在Firefox上,你可以使用unsafeWindow.localMain = localMain;
来注入代码,Firebug会看到它。
unsafeWindow.localMain();
运行来自GM的代码,localMain();
从Firebug控制台运行它。
请注意,此方法确实暴露了恶意JavaScript(来自目标页面)的路由,以获取提升的权限并可能使您的系统失效(这是GM首先被移动到沙箱的原因之一)。但是,在定位可信页面时,它会快速而简单。
~~~
或者,您可以像这样注入脚本:
var scriptNode = document.createElement ("script");
scriptNode.textContent = localMain.toString() + "\n localMain ();";
document.body.appendChild (scriptNode);
此方法适用于所有相关浏览器。
~~~
像jQuery这样的库可以以类似的方式复制或注入。
答案 1 :(得分:1)
我知道firebug无法访问greasemonkey脚本,但我想知道是否有办法将脚本暴露给firebug并设置断点。我希望能够最终逐步完成我正在处理的脚本。
没有办法在用户脚本atm上设置Firebug断点,但是John Barton(Firebug)和其他人正在计划一种方法来实现这一点,所以在将来要注意它!
类似的说明:有没有办法测试脚本而不必每次等待4秒才能安装它?
如果您使用Scriptish,则安装时没有延迟。
答案 2 :(得分:0)
试试Venkman JS调试器。我不确定它是否可以访问脚本,但值得一试。要测试的另一件事是让Firebug打开/启用并粘贴一些“调试器”;陈述,看它是否捡起来。这些是一些想法,我还没有测试过它们。