我已经在Apple Developer网站上复制了以下示例中的代码。
当我运行扩展时,它会正常运行,除了注入的脚本运行3次,导致输出被写入console.log 3次。我还在doBigCalc函数中发出警报,它打开了3个警报。
为什么会发生/它应该发生?
答案 0 :(得分:5)
您没有说出您的实施,但可能是您的代码不是问题。关键是要了解注入的脚本已加载....来自injected script documentation:
将脚本注入顶级页面和任何包含HTML源代码的子项,例如iframe。不要假设每个浏览器选项卡只有一个脚本实例。
答案 1 :(得分:1)
文档提到您可以使用三个不同级别的事件处理程序来分发消息:
safari.application.activeBrowserWindow.activeTab.addEventListener("message", waitForMessage, false);
safari.application.activeBrowserWindow.addEventListener("message", waitForMessage, false);
safari.application.addEventListener("message", waitForMessage, false);
但你应该选择其中一个。你没有将事件监听器附加到这三个人身上吗?如果你是,你肯定会运行三次。