代码之家  ›  专栏  ›  技术社区  ›  Craig Siemens

多次运行注入javascript的Safari扩展

  •  3
  • Craig Siemens  · 技术社区  · 14 年前

    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 回复  |  直到 6 年前
        1
  •  6
  •   Cœur N0mi    6 年前

    你不需要对你的实现说话,但是你的代码可能不是问题所在。关键是要理解注入的脚本是加载的。。。。从 injected script documentation

    脚本被注入到顶层页面和任何具有HTML源(如iframe)的子级中。不要假设每个浏览器选项卡上只有一个脚本实例。

        2
  •  1
  •   Andrew    14 年前

    文档中提到,您可以在三个不同的级别上使用事件处理程序发送消息:

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