繁体   English   中英

Safari扩展程序多次运行注入的javascript

[英]Safari extension running injected javascript multiple times

我已从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个警报。

为什么会这样/应该发生吗?

您没有谈到实现,但是可能是您的代码不是问题。 关键是要了解已加载注入的脚本....从注入的脚本文档中

脚本被注入到顶层页面以及所有带有HTML源代码(例如iframe)的子级中。 不要假定每个浏览器选项卡中只有一个脚本实例。

该文档提到您可以使用事件处理程序在三个不同级别上分派消息:

safari.application.activeBrowserWindow.activeTab.addEventListener("message", waitForMessage, false);

safari.application.activeBrowserWindow.addEventListener("message", waitForMessage, false);

safari.application.addEventListener("message", waitForMessage, false);

但是您应该选择三者之一。 您不是将事件侦听器都附加到这三个对象上吗? 如果是这样,您肯定会使其运行三遍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM