javascript:从 GM 脚本调用嵌入式函数

标签 javascript function firebug greasemonkey

网页上有

<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/

相关文章:

javascript - 在 Electron 中关闭窗口时保持页面内容加载

javascript - 为什么 json_decode($data, TRUE) 将数组转换为字符串?

javascript - Angularjs,等待嵌套的 promise

javascript - 当在其内部调用函数时,第二次调用的返回值不同

jQuery 在 Firebug 控制台上工作,但在页面加载时不工作

Javascript:Node.prototype 有什么不同吗?出于某种原因,我无法在没有错误的情况下修改它

c - 如何使用按位运算符?

javascript - 如何在匿名函数中不循环地执行从1到10的数字?

html - Firebug 修复相同的 css?

javascript - Firebug 控制台中的对象