编程语言
首页 > 编程语言> > javascript – 有条件地将内容脚本加载到Safari扩展中,如FF / Chrome中?

javascript – 有条件地将内容脚本加载到Safari扩展中,如FF / Chrome中?

作者:互联网

我正在为Chrome,Firefox和Linux编写一个相当复杂的浏览器扩展程序.苹果浏览器.

在Chrome& Firefox,我可以根据URL匹配指定将哪些内容脚本注入到哪些站点.

Safari似乎没有提供任何此类(细粒度)功能 – 它们只允许所有站点使用一个白名单/黑名单.

有没有办法做到这一点?如果没有,我如何有条件地加载Javascript文件? (记住我不能将它们添加到DOM中).

我试过yepnope,但它附加到DOM.

注意:我不想在实际文件中添加逻辑,因为它们本质上是在扩展中重复的库代码.

解决方法:

safari.extension.addContentScript和safari.extension.addContentScriptFromURL允许您以编程方式注入脚本.您可以在全局页面,扩展名弹出窗口或扩展栏中使用这些方法.对于这两种方法,参数是:

>要注入的脚本(分别作为字符串或URL),
> URL模式的白名单,以匹配注入脚本的页面,
>排除页面的黑名单,和
>一个布尔值,用于是否将脚本作为结束脚本(或者作为启动脚本)注入.

有关详细信息,请参阅Safari Extensions Reference中的this page.

请注意,白名单和黑名单都使用与UNIX通配符相似(但不完全相同)的URL模式格式,并且不如常规表达式那么强大.这种模式格式在this page的底部描述.

标签:javascript,browser,safari,safari-extension,content-script
来源: https://codeday.me/bug/20190715/1469943.html