Greasemonkey @grant不再工作了吗?

时间:2015-04-30 08:35:21

标签: firefox greasemonkey

我有以下Greasemonkey脚本,它试图读取资源文本:

// ==UserScript==
// @name        Test
// @namespace   test
// @version     1
// @grant       GM_getResourceText
// @resource    testresource http://stackoverflow.com/
// ==/UserScript==

var text = GM_getResourceText('testresource');
几周前我尝试了类似的东西,但它确实奏效了。 现在当我运行它时,找不到GM_getResourceText:

  

/ *
  例外:ReferenceError:未定义GM_getResourceText   @便签/ 7:9:5
  * /

我在Firefox 37.0.2上有Greasemonkey 3.1。 是否有其他人有同样的问题和/或知道什么是错的?

1 个答案:

答案 0 :(得分:2)

该代码不应该提供该错误,{37}在Firefox 37.0.2和Greasemonkey 3.1上,GM_getResourceText()仍然可以正常工作。

确保您正在编辑并保存正确的脚本副本。见How do I edit a script I'm working on?

当您查看浏览器控制台时,该代码应该给出错误,如:

  

:组件返回失败代码:0x805e0006 [nsIWebNavigation.loadURI] browser.js:10592:0
  TypeError:aDefault未定义

严格来说,这是Greasemonkey代码中的一个错误。

但是,这也不是@resource通常使用的方式。通常,您只需加载特定的和静态文件。 @resource适用于CSS,图像,XML等文件...不是不断变化的应用程序路径。

如果您确实需要将此类网站的快照作为资源,请将页面(示例中为https://stackoverflow.com/)保存到与*.user.js文件相同的文件夹中,并.htm扩展(非常重要)和@resource那个。

所以,这个脚本运行得很好:

// ==UserScript==
// @name        _Test
// @include     http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant       GM_getResourceText
// @resource    testresource Stack_Overflow.htm
// ==/UserScript==

var text = GM_getResourceText ('testresource');
console.log (text);
在 之后

您已将https://stackoverflow.com/保存为Stack_Overflow.htm在脚本的安装目录中。