Safari扩展运行多次注入javascript

时间:2010-07-06 22:45:19

标签: javascript safari safari-extension

我已经在Apple Developer网站上复制了以下示例中的代码。

https://developer.apple.com/library/content/documentation/Tools/Conceptual/SafariExtensionGuide/MessagesandProxies/MessagesandProxies.html#//apple_ref/doc/uid/TP40009977-CH14-SW1

当我运行扩展时,它会正常运行,除了注入的脚本运行3次,导致输出被写入console.log 3次。我还在doBigCalc函数中发出警报,它打开了3个警报。

为什么会发生/它应该发生?

2 个答案:

答案 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);

但你应该选择其中一个。你没有将事件监听器附加到这三个人身上吗?如果你是,你肯定会运行三次。