在网址和标签发生变化时提醒框

时间:2016-06-13 18:30:31

标签: javascript google-chrome google-chrome-extension

我是初学者,正在为Chrome编写扩展程序,而我正在解决一些任务来学习。

当我更改当前标签的标签和/或网址时,我想提醒任何。为了测试,我在清单文件中添加了以下行:

"background_page": "background.html",

"permissions": [
    //"activeTab",
    "tabs"
    //"http://*/*",
    //"https://*/*",
    //"https://secure.flickr.com/"
],

但在 chrome://extensions 页面中显示

  

'background_page'要求清单版本为1或更低。

完整的manifest.json:

{
  "manifest_version": 2,

  "name": "Remove unwanted adds",
  "description": "This extension prevents your browser to load adds.",
  "version": "1.0",

  //"background": {
  //  "scripts": [ "background.js" ]
  //},

  "content_scripts": [
    {
      "matches": [ /*"localhost/dental/frontend/patient/signin"*/ "http://someurl" ], // change this to 192.168.5.20/login.html
      //"css": [ "mystyles.css" ],
      "js": [ /*"jquery.js", "myscript.js"*/ "mainscript.js" ]
    }
  ],

  "background_page": "background.html",

  "permissions": [
    //"activeTab",
    //"background",
    //"clipboardRead",
    //"clipboardWrite",
    //"storage",
    "tabs"
    //"http://*/*",
    //"https://*/*",
    //"https://secure.flickr.com/"
  ],
  "browser_action": {
    //"default_icon": "img/icon.png",
    "default_popup": "popup.html"
  }
}

我也试过这种方法(source):

"content_scripts": [
    {
      "matches": [ /*"localhost/dental/frontend/patient/signin"*/ "http://someurl" ],
      //"css": [ "mystyles.css" ],
      "js": [ /*"jquery.js", "myscript.js"*/ "mainscript.js" ]
    }
  ],

mainscript.js 中我只写了这一行:

alert("navigated!");

我不知道,但当我导航到那个 someurl 时,这个也没有用。

所以, 1)我的代码出了什么问题 2)解决这个任务的最佳方法是什么?

感谢。

2 个答案:

答案 0 :(得分:2)

你不能在json文件中有评论。 Json文件仅用于数据

答案 1 :(得分:1)

1) 的' BACKGROUND_PAGE'要求清单版本为1或更低。

要解决导致此消息的问题,您的清单(就后台页面而言)应如下所示(source):

{
  "name": "My extension",
  ...
  "background": {
    "page": "background.html"
  },
  ...
}

关于名为 mainscript.js未执行的内容脚本,我首先会尝试更改匹配以涵盖所有网址:

"matches": [ "<all_urls>" ]

如果内容脚本开始工作,那么使用提到的here规则构建一个满足您需求的模式。

2)我建议您查看chrome.tabs API,特别是onCreated,onUpdated和onSelectionChanged事件。