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

Tom*_*rth 3 javascript browser safari safari-extension content-script

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

在Chrome和Firefox中,我可以根据网址匹配指定将哪些内容脚本注入到哪些网站中.

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

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

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

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

chu*_*ter 9

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

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

有关详细信息,请参阅Safari Extensions Reference中的此页面.

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