我想要匹配:
http://images.orkut.com/
http://www.orkut.co.uk/
http://www.orkut.com.br/
http://images.orkut.jp/
我尝试使用的模式是:
http://*.orkut.*/*
但是当我尝试加载扩展时,它说:
invalid value for content_scripts[0].matches[0]
有没有办法在不指定完整域名的情况下匹配这些网址?
在清单文件中
"permissions": [ "tabs", "http://*.orkut.*/*", "https://*.orkut.*/*" ],
"content_scripts":
[
{
"matches": [ "http://*.orkut.*/" ], // error
"js": ["content/loader.js"]
}
]
更通用的不起作用,而这个有效:
"matches": [ "http://*.orkut.co.uk/" ],
答案 0 :(得分:2)
出于安全原因,您无法执行此操作,有关详细信息,请参阅http://code.google.com/chrome/extensions/match_patterns.html。
同样,Chrome Extension的团队负责人做了一个很好的解释原因: http://groups.google.com/a/chromium.org/group/chromium-extensions/msg/3d305eb340f01763
答案 1 :(得分:0)
如Mohamed Mansour's answer所述, Google不支持此功能在manifest.json
例如,这是解决类似情况的一种方法,我希望仅在192.168.*.*
个主机上执行内容脚本(这是内部chrome扩展)
使用<all_urls>
...
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content-script.js"]
}
],
...
使用简单条件来验证主机名是否与正则表达式模式匹配
let isValidHostname = /^192.168.\d+.\d+$/.test(window.location.hostname);
if (isValidHostname){
// Do your stuff here
}