对于Chrome扩展程序中的内容脚本,您可以指定matches
和exclude_matches
来控制它们注入的页面。这必须在扩展名的清单中指定,如此
{
"name": "Color picker",
...
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"exclude_matches": ["http://www.google.com/*"],
"css": ["color_picker.css"],
"js": ["jquery.js", "color_picker.js"]
}
],
...
}
我想知道是否可以在使用扩展程序时将["http://www.yahoo.com/*"],
添加到exclude_matches
。这样,我可以允许用户控制exclude_matches
答案 0 :(得分:8)
扩展程序无法修改任何本地文件,包括扩展程序manifest.json
。 Chrome为optional permissions提供了API,但不包括Content scripts。
您可以手动创建灵活的模式:
// In the content script:
var exclude = /^https?:\/\/(www\.)?yahoo\.com\//;
if (!exclude.test(location.href)) {
// Run logic.
}
正则表达式非常强大,但并非必要。可以使用其他location.href
属性,而不是location
,而不是location.host
。
另请参阅:MDN: window.location
。
答案 1 :(得分:2)
您可以将exclude_matches
视为对您的扩展必须从不做的“硬”限制 - 简而言之,它设置内容脚本不应包含哪些类型页面的永久界限触摸。没有办法动态修改它,因为它是永久性的。
但是,如果要使其灵活,则需要以编程方式进行注射。 Google已documentation了解如何使用executeScript
执行此操作。您需要使用用户控制的列表添加自己的排除逻辑(并使用其他答案的好建议)。