如何过滤Chrome扩展中不以http或https开头的URL

时间:2015-10-08 03:23:06

标签: json google-chrome-extension

我正在学习如何编写Chrome扩展程序,并且正在这样做,因为我需要在本地环境中进行测试。我正在尝试制作清单文件的部分,您可以在其中告诉它要运行哪些URL,但我们的测试环境URL不能使用它。我们映射域名,例如:

  

Example.com而不是http://example.com

但是,当我将它放在我的清单设置中时,它会在没有

的情况下为无效网址提供错误

此处显示代码:

 {
  "manifest_version": 2,
  "name": "K Domain Cleaner",
  "version": "0.1",
  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["jquery.js", "kc-domaincleaner-1.0.js"]
    }
  ]  
}

当我尝试设置匹配属性时:

{
  "manifest_version": 2,
  "name": "K Domain Cleaner",
  "version": "0.1",
  "content_scripts": [
    {
      "matches": ["Dev3.com"],
      "js": ["jquery.js", "kc-domaincleaner-1.0.js"]
    }
  ]  
}

我收到以下错误:

  

无法从:〜\ Desktop \ Chrome Extensions加载扩展程序   'content_scripts [0] .matches [0]'的值无效:缺少方案分隔符

所以它不仅会在我们的测试域下运行。为什么我不能使用http://的前缀,并且有办法解决这个问题。 http://Dev3.com与Dev3.com完全不同。提前谢谢。

1 个答案:

答案 0 :(得分:2)

是无效的网址。

网址by definition must contain the scheme。没有它,它可以被解释为一个地址,但不能解释为 (和如何)你想在那个地址访问

如果您在地址栏中输入没有方案的域名,默认情况下会假设为http:,就像不输入端口假定某些默认值(取决于方案)。

在那种情况下,“http://Dev3.com完全不同,然后Dev3.com”没有意义,尽管它是完全正确的:一个是有效的URL,另一个只是一个字符串(恰好是一个有效的域名称)。

请注意:Chrome只是隐藏地址栏中的http://,但它隐含在那里。这可能是你困惑的根源。请放心http://example.com将覆盖地址栏中显示为example.com的地址。

正如wOxxOm所提到的,你也应该take a look at the docs