我正在构建 Safari 浏览器扩展
我想从注入(inject)的脚本中调用网页中的函数
例如,如果我从注入(inject)的脚本在页面上创建了一个脚本:
var newElement = document.createElement("script");
newElement.textContent = "function test(){alert(test);}";
document.body.insertBefore(newElement, document.body.firstChild);
是否可以从注入(inject)的脚本中调用该函数?
或者,是否可以执行相反的操作并从网页调用注入(inject)脚本中的函数?
提前致谢。
编辑:
对于任何感兴趣的人,我目前已经通过添加/删除自执行函数解决了这个问题:
if(script!=null)
script.parentNode.removeChild(script);
script = document.createElement("script");
script.textContent = "(function(){test();})();";
document.body.insertBefore(script, document.body.firstChild);
不确定是否有更好的原因来实现这一点?
最佳答案
看来这应该用 postMessage 来完成
关于javascript - Safari 扩展注入(inject)脚本/网页交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9910424/