我为Google Chrome写了一个小用户。它工作得很好,直到我调用一个函数initTimer()
我的脚本中没有这样的函数,但它在我的用户脚本运行的页面中的脚本中,但无论如何都有错误initTimer() is not defined
。我曾尝试撰写window.initTimer()
,但却说Object [object DOMWindow] has no method 'initTimer'
。那么我怎样才能使它发挥作用呢?
提前致谢
答案 0 :(得分:2)
由于用户脚本通常是从浏览器环境的其余部分沙箱化的,因此出于安全原因,用户脚本无法与页面本身上运行的脚本进行交互,也无法在页面上运行的脚本与用户脚本进行交互。
您必须通过在页面本身中创建包含您要执行的代码的script
元素来为此执行脚本注入。
var s = document.createElement('script');
s.innerHTML = 'initTimer();';
document.body.appendChild(s);
这可能会或可能不会破坏您的脚本的问题是注入的代码无法直接与沙箱中的代码通信,因此您必须注入 all 您的代码,或者如果需要,可以使用其他方法进行通信。