我希望我的扩展程序只出现在特定网站上。
详细说明:
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()]
}]);
});
});
答案 0 :(得分:2)
lossleader's comment是正确的。 Page Actions专门用于仅在某些情况下提供按钮:
使用
chrome.pageAction
API将图标放在地址栏中。页面操作表示可以在当前页面上执行的操作,但不适用于所有页面。
您的后台代码是正确的,但是,由于您忘记了运行它的权限,它无效。
您基于此的示例是使用Declarative Content API。它附带一个权限,因此您需要将其添加到清单中:
"permissions": [
"activeTab",
"https://ajax.googleapis.com/",
"webNavigation",
"declarativeContent"
],
然后您的页面操作应该显示为预期。