更通用的内容脚本匹配模式?

时间:2010-12-25 20:32:46

标签: google-chrome google-chrome-extension

我想要匹配:

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/" ],

2 个答案:

答案 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

但是,您仍然可以在内容脚本中添加一个简单的javascript检查!

例如,这是解决类似情况的一种方法,我希望仅在192.168.*.*个主机上执行内容脚本(这是内部chrome扩展)

    manifest.json 中的
  1. 使用<all_urls>

    ...
      "content_scripts": [
        {
          "matches": ["<all_urls>"],
          "js": ["content-script.js"]
        }
      ],
    ...
    
  2. content-script.js 中的
  3. 使用简单条件来验证主机名是否与正则表达式模式匹配

    let isValidHostname = /^192.168.\d+.\d+$/.test(window.location.hostname);
    if (isValidHostname){
        // Do your stuff here
    }