javascript - Safari 扩展注入(inject)脚本/网页交互

标签 javascript safari safari-extension

我正在构建 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/

相关文章:

javascript - ionic 3、自定义组件和ngClass绑定(bind)问题

javascript - 解析调用自己函数的 Promise

javascript - 什么 Javascript 富文本编辑器不会破坏浏览器的拼写检查?

javascript - 将下载链接从网络浏览器传递到第三方应用程序

javascript - Safari 扩展 URL

javascript - 在可内容编辑容器内的元素开头插入文本

ipad - iPad Safari HTML5音频播放

ios - 在 iOS 15 Safari 中禁用下拉刷新

css - Safari 文本垂直对齐

macos - 如何从命令行构建 Safari 扩展包?