Chrome扩展仅适用于特定网站

时间:2015-04-26 19:03:07

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

我希望我的扩展程序只出现在特定网站上。

详细说明:

  • 我们说我将网址设为example.com/*
  • 因此,每次打开example.com/*时,我的扩展程序都会显示
  • 否则,它应该是隐形的,不起作用

我怎样才能做到这一点?

我的扩展功能是在特定网站上运行,并使用已保存的ID突出显示一些div。

我目前的清单:

{
  "manifest_version": 2,

  "name": "Dv Extention",
  "description": "Highlight Selected",
  "version": "1.0",
  "background":{
    "scripts":["background.js"],
    "persistent": false
  },
  "page_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html",
    "default_title": "Click Here!"
  },
  "permissions": [
    "activeTab",
    "https://ajax.googleapis.com/",
    "webNavigation"
  ],
  "content_scripts": [
    {
      "matches": ["*://example.com/*"],
      "js": ["jquery-2.1.3.min.js","main.js"]
    }
  ]
}

background.js

chrome.runtime.onInstalled.addListener(function() {
    chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
        chrome.declarativeContent.onPageChanged.addRules([{
            conditions: [
                new chrome.declarativeContent.PageStateMatcher({
                    pageUrl: {
                        hostEquals: 'example.com'
                    }
                })
            ],
            actions: [new chrome.declarativeContent.ShowPageAction()]
        }]);
    });
});

1 个答案:

答案 0 :(得分:2)

lossleader's comment是正确的。 Page Actions专门用于仅在某些情况下提供按钮:

  

使用chrome.pageAction API将图标放在地址栏中。页面操作表示可以在当前页面上执行的操作,但不适用于所有页面

您的后台代码是正确的,但是,由于您忘记了运行它的权限,它无效。

您基于此的示例是使用Declarative Content API。它附带一个权限,因此您需要将其添加到清单中:

  "permissions": [
    "activeTab",
    "https://ajax.googleapis.com/",
    "webNavigation",
    "declarativeContent"
  ],

然后您的页面操作应该显示为预期。