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/*
- 否则,它应该是无形的,不起作用
{
"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的元素都将高亮显示(添加背景色)。我将使用存储阵列并加载它。