网页上有
<script>
function fn982734()
{
// some code
}
</script>
在我的 Greasemonkey 脚本中,我有以下代码:
var fn = fields[5].getElementsByTagName("a")[0].getAttribute('onclick').substr(7,11);
console.log(fn); // outputs fn982734 to the firebug console
window[fn]();
此代码不起作用,并在错误控制台中产生错误:window[fn] 不是函数。然而,直接输入 Firebug :
var fn = 'fn982734';
window[fn]();
完美运行。怎么回事?
最佳答案
Greasemonkey 脚本位于沙箱内,而 Firebug 则没有。 请参阅:"Avoid Common Pitfalls" (in Greasemonkey) .
您的 GM 脚本将通过 unsafeWindow
访问该函数。像这样:
unsafeWindow.fn982734();
.
或者,
var fn = 'fn982734';
unsafeWindow[fn]();
也有效——在 Greasemonkey 脚本中。
关于javascript:从 GM 脚本调用嵌入式函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3254112/