我正在尝试将我的页面操作图标显示在特定网址上。我已尝试实现示例here但这些需要trunk / dev release。
我当前的代码取自a SO answer。但这似乎不起作用,因为tab对象在我的测试中从来没有一个url属性可以限制。
// background.js
function checkURL(tabId, info, tab) {
if (info.status === "complete") {
if (tab.url) {
// restrict here
chrome.pageAction.show(tabId);
}
}
}
chrome.tabs.onUpdated.addListener(checkURL);
//清单
{
"manifest_version": 2,
"name": "My first extension",
"version": "1.0",
"content_scripts": [
{
"matches": ["http://www.google.com/*"],
"js": [
"script.js"
],
"run_at": "document_idle"
}
],
"background": {
"page": "background.html",
"persistent": false
},
"page_action": {
"default_icon": "icon.png"
}
}
我做错了什么?
答案 0 :(得分:2)
这对我有用:
//background.js
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (~tab.url.indexOf('.pl')) {
chrome.pageAction.show(tabId);
}
});
//manifest.json
"permissions": [
"tabs"
]
我没有使用persistent:false
答案 1 :(得分:1)
我很晚才回答这个问题,但这可能有助于其他人遇到同样的问题。我花了大约20分钟为自己的扩展寻找它。
看这里https://developer.chrome.com/extensions/declarativeContent
将此添加到您的清单
"background" : {
"scripts": ["background.js"]
}
"permissions" : {
"declarativeContent"
}
然后在background.js
var rule1 = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
// If I wanted my extension to work only on SO I would put
// hostContains: 'stackoverflow.com'
// You can check out the link above for more options for the rules
pageUrl: { hostContains: 'some string' }
})
],
actions: [ new chrome.declarativeContent.ShowPageAction() ]
};
chrome.runtime.onInstalled.addListener(function (details) {
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([rule1])
})
})