2009-09-11 202 views
27

我想让一个Greasemonkey脚本在页面上运行。但事实并非如此。如何确定为什么一个Greasemonkey脚本没有运行

如何调试脚本?

开始一个新的Greasemonkey脚本的最小可能的婴儿步骤是什么?

+1

顺便说一句我解决了我的具体问题。原来,“管理用户脚本”对话框中的“包含页面”包含“lavpriskoekken.dk/*”,而不是“* lavpriskoekken.dk/*” – 2009-09-11 13:26:21

+4

同样的事情发生在我身上。 Hello World将正确运行,然后我将添加一行并停止工作。如果我像退出一样,它再也不会工作。 是否greasemonkey崩溃或什么,需要重新启动解释器?你是怎样做的? – 2011-02-09 21:11:34

+0

您不需要“重新启动”Greasemonkey。它会尝试在每次与您包含的页面相匹配的页面加载到浏览器中时运行脚本。所以“重新启动”的方法是在浏览器中点击刷新。 – 2011-04-20 12:51:15

回答

6

你可以在你的脚本到处写日志,以获得更好的如果他们正在做什么痕迹:

GM_log("Hello, World!"); 

http://wiki.greasespot.net/GM_log

更多信息: http://wiki.greasespot.net/Greasemonkey_Manual:Other_Useful_Tools#JavaScript_Console

另一个秘诀:取看看整个greasemonkey维基。他们有很多好东西: http://wiki.greasespot.net/Main_Page

+9

谢谢,但当时我需要这个,我的脚本甚至没有运行 - 甚至不能运行'警报( “你好”);'。所以我希望通过一些步骤来建立一个清单,你可以检查你的脚本是否还在运行。 – 2009-09-12 05:34:46

+0

...虽然有用的提示! – 2009-09-12 05:40:50

+2

从Greasemonkey 3.2(Firefox 38,OS X)开始,'GM_log'似乎不起作用。 – 2015-05-31 20:38:56

5

在Firefox中,打开Tools> Error Console并在加载页面时观察它。如果您被页面中的警告淹没,您可以过滤错误,这仍然会突出显示脚本问题。

+1

FF应该是这样的。但是现在,UserScript某些错误(如脚本无法编译)在Web控制台('Ctrl + Shift + K')和浏览器控制台('Ctrl + Shift + J')中都不会显示。看起来我们必须切换到Chrome来调试GM脚本.. – Tino 2016-01-03 02:04:56

5

我的greasemonkey脚本正在工作;我添加了一行;它停止工作;我删除了该行;它仍然没有工作。

我确定,当我重新加载添加了新行的脚本时,greasemonkey安装了一个损坏的updater.php脚本。重新加载旧脚本保留了updater.php脚本的损坏版本。我最终在我的Firefox Web控制台中发现了一条指向updater.php脚本的错误消息。在加载新版本的脚本后,我用包含注释的文件替换了updater.php脚本,并开始执行脚本。

在Mac上,我updater.php是:/Users/csimmons/Library/Application Support/Firefox/Profiles/81ri7k71.default/gm_scripts/Extended_LoU_Tweak

您可以找到类似的updater.php文件在你的Firefox默认配置文件gm_scripts/目录。

30

当我从用户脚本开始时,我的第一个错误是没有使用通配符。

// Broken: 
// @include  https://www.example.com/ 

// Working: 
// @include  https://www.example.com/* 

这是脚本甚至不能应用的最简单的方法,因此根本不能运行。另外,请确保检查语法错误;错误的分号会阻止脚本被解析,因此被忽略。

+3

是的,这解决了我的问题! – Germstorm 2013-11-08 14:08:07

+0

这对我有效,但这只是模糊!我为FB创建了一个脚本,并且我有'@include https:// www.facebook.com',虽然确切的地址是'https:// facebook.com',但它并未加载。因此,即使没有正斜杠,“模式”也是匹配的,但当字符串100%相同时,它不匹配。奇怪的。 – MarioDS 2015-02-23 18:58:12

+4

为了公平起见,www.facebook.com!= facebook.com。 – 2015-02-24 13:50:26

2

另外,@include的语法只有一个匹配模式。如果你想要另一个,添加另一个@include行。

4

对于我来说,脚本中有一个语法错误,Greasemonkey没有给出错误信息。将脚本复制粘贴到JS控制台显示了这个秘密。

1

我也有这个麻烦;这是我的解决方案:

  • 检查(和修改棘手的)我工作,当它发生

  • 卸载并重新安装的GreaseMonkey

  • 那么代码的一部分我得到了一个真实的错误报告

编辑:今天,问题来得比平时多(ne w发布?) 它看起来像Firefox的网络工具是与greasemonkey或JS引擎错误消息。因此,当你在某处寻找(ctrl + alt + k)时,错误消息会出现在其他地方(尝试打开另一个控制台),这就像一个有趣的游戏。

4

确保Greasemonkey的被摆在首位启用:

0

如果一个网页的URL设置使用Javascript,而不是通过浏览(像Instagram的给予其弹出窗口固定链接URL) Greasemonkey将显示脚本正在运行,但实际上不会启动。尝试重新加载网址并查看它是否真正进入同一页面。如果不是,则必须匹配主页网址而不是弹出网址。

相关问题