0

如果是 Safari,如果我禁用然后在同一个会话中重新启用扩展,我最终会注入内容脚本的多个副本。

页面刷新后,一切恢复正常。Chrome 有一个 Safari 似乎缺乏的“无效扩展上下文”的概念。

内容脚本(script.js)是通过将其添加到 xcode 中的 Safari 扩展应用程序中的键SFSafariContentScript 来注册的。根据https://developer.apple.com/documentation/safariservices/safari_app_extensions/injecting_a_script_into_a_webpage?language=objc,加载扩展程序时始终注入内容脚本。如果第一次已经注入,是否有办法防止它再次被注入?

我在网上做了很多研究,但找不到解决方案。任何建议都非常感谢!

4

1 回答 1

0

这是一种默认行为。如果网页有子框架,脚本将被注入所有框架。

但是你可以通过检查它的主机来防止多次调用。

        //sample function
        function foo() 
        {
           if (window.top === window)  //main-frame only
           { 
            //place code here.
           }
        }
于 2019-07-04T15:41:11.743 回答