我编写了Chrome扩展程序页面操作,其中包含以下实现:
在manifest.json中:
"permissions" : [
"declarativeContent"
],
Run Code Online (Sandbox Code Playgroud)
在background.js中:
chrome.runtime.onInstalled.addListener(function() {
// Replace all rules ...
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
// With a new rule ...
chrome.declarativeContent.onPageChanged.addRules([
{
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { urlMatches: 'www\.somewebsite\.com/(translate|revise)/' },
})
],
// And shows the extension's page action.
actions: [ new chrome.declarativeContent.ShowPageAction() ]
}
]);
});
});
Run Code Online (Sandbox Code Playgroud)
我注意到在大多数Chrome浏览器中,页面操作图标在地址中正确显示,并且仅在满足匹配页面时才会显示:
但是,在某些浏览器中,最近页面操作开始显示为已启用/已禁用的浏览器操作,即在地址栏之外,这很笨拙,因为围绕页面操作图标的整体想法是当且仅当页面与它们相关时才显示.在大多数情况下,没有必要显示禁用的页面操作.实际上,它发生在几天前用于工作的浏览器上,就像Chrome更新有一些副作用一样.
我认为这与某些Chrome设置有关,现在可以显示所有扩展程序,但有什么方法可以强制页面操作在地址栏中始终显示,并且只有在它真正有用时才会显示?
我不知道该怎么做,文档似乎没有让这个显而易见.
我尝试制作background_page并放入chrome.pageAction.show(tab.id);其中,但这似乎不起作用.
我不想使用该browser_action图标,因为该图标仅反映了插件的状态,但它不是用于执行任何操作的按钮.
如何在任何页面/标签的地址栏中添加page_action的图标?
编辑:这是我的manifest.json:
{
"name": "My Very First Extension :D",
"version": "0.0.1",
"description": "Awesomeness",
"background_page": "background.html",
"page_action": {
"default_icon": "icon.png"
},
"content_scripts": [{
"matches": ["http://*/*", "https://*/*"],
"js": ["mmm.js"]
}]
}
Run Code Online (Sandbox Code Playgroud)
其中icon.png是一个19x19像素的PNG图形.这是background.html源代码,我正在尝试为所有选项卡显示page_action图标:
<!DOCTYPE html>
<html>
<head>
<script>
chrome.pageAction.show(tab.id);
</script>
</head>
</html>
Run Code Online (Sandbox Code Playgroud)