1

我为 Google Chrome 编写了一个小的用户脚本。它工作得很好,直到我调用一个函数initTimer()我的脚本中没有这样的函数,但它在我的用户脚本运行的页面中的脚本中,但无论如何都有错误initTimer() is not defined。我试过写window.initTimer(),但它说Object [object DOMWindow] has no method 'initTimer'。那么我怎样才能让它工作呢?
提前致谢

4

1 回答 1

2

因为用户脚本通常是从浏览器环境的其余部分沙箱化的,出于安全原因,用户脚本不能与页面本身上运行的脚本交互,页面上运行的脚本也不能与用户脚本交互。

您必须为此进行脚本注入,方法是script在页面本身中创建一个包含您要执行的代码的元素。

var s = document.createElement('script');
s.innerHTML = 'initTimer();';
document.body.appendChild(s);

这个问题可能会或可能不会破坏您的脚本,是注入的代码将无法直接与沙箱中的代码进行通信,因此您要么必须注入所有代码,要么使用替代方法如果需要,可以通过方法进行沟通。

于 2011-04-03T15:22:06.437 回答