我有以下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。 是否有其他人有同样的问题和/或知道什么是错的?
答案 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
在脚本的安装目录中。