如果使用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,内容脚本总是在加载扩展时注入的。如果第一次注射过,是否有办法防止再次注射?
我在网上做了很多研究,但找不到解决方案。非常感谢您的任何建议!
这是一种默认行为。如果网页有子框架,脚本将被注入到所有框架中。
但您可以通过检查其主框架来防止多次调用。
//sample function
function foo()
{
if (window.top === window) //main-frame only
{
//place code here.
}
}