Javascript Chrome扩展仅在特定网站中可用

Javascript Chrome扩展仅在特定网站中可用,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我希望我的扩展只出现在特定的网站 详情: 假设我将url设置为example.com/* 所以每次我打开example.com/*我的扩展名都会出现 否则,它应该是无形的,不起作用 我怎样才能做到这一点 我的扩展功能是在特定的网站上运行,并用保存的ID突出显示一些div 我目前的舱单: { "manifest_version": 2, "name": "Dv Extention", "description": "Highlight Selected", "version"

我希望我的扩展只出现在特定的网站

详情:

  • 假设我将url设置为
    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"]
    }
  ]
}
  "permissions": [
    "activeTab",
    "https://ajax.googleapis.com/",
    "webNavigation",
    "declarativeContent"
  ],
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()]
        }]);
    });
});
这是正确的。专门设计用于仅在某些情况下提供按钮:

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

您的背景代码是正确的,但是,它不起作用,因为您忘记了运行它的权限

您基于此的示例正在使用。它带有权限,因此您需要将其添加到清单中:

{
  "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"]
    }
  ]
}
  "permissions": [
    "activeTab",
    "https://ajax.googleapis.com/",
    "webNavigation",
    "declarativeContent"
  ],

然后,您的页面操作应该像预期的那样出现。

如果您所说的“出现”是指您试图使用的标准扩展UI并不总是存在,那么您很可能需要页面操作,即:您没有解释“出现”的含义。您的扩展现在如何工作?请认真阅读文档。这里解释得很清楚。您可能为示例编辑了清单,但请注意,内容脚本的正确匹配模式是
*://google.com/*
(少一个斜杠)。我怀疑这只是一个打字错误。编辑:我在问题中编辑了它,因为它与你的问题无关。啊,我明白了,谢谢。当我发布问题时,我只是重新阅读了developer.chrome.com,对我来说已经是凌晨3点到4点了,也许我只是不够专注。看来我有很多东西要学:3。我现在正在编写代码,希望我没有遇到更多的问题。嘿,我有一些简单的问题。我用popup.html创建了一个页面动作作为默认的弹出窗口,并在其中附加了一个JS。在JS中,我只放了console.log(“JSPopup-loaded”)。但是看不到控制台日志。你能帮我修一下吗?你在找什么?通过右键点击图标并选择“检查弹出窗口”可以调用适当的控制台。我现在想知道。假设我需要一个存储来存储ID和名称数组,然后我的弹出窗口和我的内容脚本需要同时加载它们。问题是弹出窗口中的我的js无法从我的内容脚本中的js调用任何函数,那么你建议我怎么做?我的ext是这样做的:第一个用户在弹出窗口中按“add”,然后他可以单击页面中的一个元素,单击它后,我的ext将保存元素的id。之后,每次他打开站点时,具有该id的元素都将高亮显示(添加背景色)。我将使用存储阵列并加载它。