我有一个带背景页面的chrome扩展程序。 background.js脚本仅在某些站点上正确运行(按预期)。如何在未使用的网站上隐藏Google Chrome工具栏中的图标?优选地,仅在清单中定义的站点上显示图标是允许的。
我正在尝试使用pageActions,这是我目前无效的代码。没有显示图标。
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Called when the url of a tab changes.
function checkForValidUrl(tabId, changeInfo, tab) {
// If the tabs url starts with "http://specificsite.com"...
if (tab.url.indexOf('http://') == 0) {
// ... show the page action.
chrome.pageAction.show(tabId);
}
};
// Listen for any changes to the URL of any tab.
chrome.tabs.onUpdated.addListener(checkForValidUrl);
清单:
"page_action": {
"default_icon": "key.png",
"default_title": "Download this Deck"
},
"background": {
"scripts": ["background.js"],
"persistent": false
},
编辑:在我重新加载扩展程序之后似乎工作,直到我使用以下代码切换标签:
chrome.tabs.getSelected(null, function(tab) {
chrome.pageAction.show(tab.id);
});
答案 0 :(得分:1)
有一个特定的API可以匹配您的案例,declarativeContent API。
当前实施的唯一可能操作是根据一组规则显示“页面操作”按钮。有关更多示例,请参阅文档。
chrome.runtime.onInstalled.addListener(function(details) {
var rule = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: 'example.com' },
})
],
actions: [ new chrome.declarativeContent.ShowPageAction() ]
};
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([rule]);
});
});
答案 1 :(得分:0)
您应该使用页面操作而不是浏览器操作。 它专为您所要求的而设计。