Javascript Greasemonkey访问冲突:unsafeWindow无法调用GM\u getResourceText

Javascript Greasemonkey访问冲突:unsafeWindow无法调用GM\u getResourceText,javascript,greasemonkey,Javascript,Greasemonkey,最近,我在将浏览器升级到Firefox 30后,尝试使用GM\u getResourceText(“filename.txt”)读取资源文件时,出现了这个错误(如果有必要的话) 我相信这是一个bug,但我找不到任何关于它的信息,因为在Firefox29中它工作得非常好。即使是现在,它仍然工作了几次,没有任何改变,只是刷新了页面。而且,我甚至不使用unsafeWindow 我的脚本如下所示: // ==UserScript== // @resource file file.txt // @g

最近,我在将浏览器升级到Firefox 30后,尝试使用
GM\u getResourceText(“filename.txt”)
读取资源文件时,出现了这个错误(如果有必要的话)

我相信这是一个bug,但我找不到任何关于它的信息,因为在Firefox29中它工作得非常好。即使是现在,它仍然工作了几次,没有任何改变,只是刷新了页面。而且,我甚至不使用
unsafeWindow

我的脚本如下所示:

// ==UserScript==
// @resource    file file.txt
// @grant       GM_getResourceText
// ==/UserScript==

if(!isOnIframe()) {
    test();
}

function isOnIframe() {
    return !(window.self === window.top);
}

function test() {
    var file = GM_getResourceText(name);
}

编辑:我注意到它在Facebook和其他网站上不起作用。这件事改变了什么吗?我怎么知道呢?

我可以确认,Scriptish 0.1.11(GM fork)在Linux上不能与Firefox 30一起使用。 福克斯20版也报道了同样的问题。

内部函数apiLeakCheck检查堆栈上的用户空间代码(不是沙盒),并且似乎在Fox 30中再次失败

官方最新的脚本版本是0.1.11,但还有一个版本是0.1.12。


这为我解决了问题。我不知道Greasymonkey(pre)版本的当前状态。

我发现一些错误报告,如您所说,在FF 20中显示了相同的问题,但我不认为它在FF 30中再次出现,至少它似乎基于一个非常相似的原因。该问题发生在函数apiLeakCheck中,该函数在尝试解析堆栈以供网站代码调用时出现。在版本20中,这是由于无法访问堆栈造成的。我不知道,也没有进一步调查当前的错误是否完全相同,但是,错误发生在同一个内部代码点。你知道什么时候解决它吗?或者为什么它有时会起作用?甚至在同一个脚本中,有些调用会通过,有些则不会。不,但是新的脚本版本0.1.12到目前为止没有造成任何问题。