我有一个普通的chrome扩展名,意思是在特定域上出现pageAction
。
Manifest.json:
{
"name" : "Page action by content",
"version" : "1.1",
"description" : "Shows a page action for HTML pages containing a video",
"background" : {
"scripts": ["background.js"],
"persistent": false
},
"page_action" :
{
"default_icon" : "video-19.png",
"default_title" : "There's a <video> in this page!"
},
"permissions": [ "declarativeContent" ],
"icons" : {
"48" : "video-48.png",
"128" : "video-128.png"
},
"manifest_version": 2
}
background.js:
chrome.runtime.onInstalled.addListener(function () {
chrome.declarativeContent.onPageChanged.removeRules(undefined, function () {
chrome.declarativeContent.onPageChanged.addRules([
{
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: 'stackoverflow.com' },
})
],
// And shows the extension's page action.
actions: [new chrome.declarativeContent.ShowPageAction()]
}
]);
});
});
chrome.pageAction.onClicked.addListener(function (tab) {
alert('hello!');
});
在大多数计算机上,这可以正常工作。在少数人群中,用户没有看到预期的alert()
,而是看到了扩展名的右键单击菜单(如果禁用或右键单击该操作,通常会显示该菜单)。图标会亮起,好像已启用一样,但是未执行onClicked
侦听器。
更奇怪的是,最初安装扩展时,即使在少数计算机上,它也可以按预期工作。仅在Chrome重新启动后,错误行为才会出现。无论是从Chrome商店加载扩展程序还是以解压缩方式加载扩展程序,都会发生这种情况。
它也可以与其他扩展名一起复制(page-action-demo,尤其是在演示网站baidu.com中)。 browserAction
个不受影响。
看似简单的manifest.json
中是否存在错误?还是我需要提交错误?
答案 0 :(得分:0)
如chrome.pageAction.onClicked.addListener所说
如果页面操作弹出,则不会触发该事件 。
这意味着您的manifest.json应该包含类似的内容(您有)
"page_action": {
"default_title": "Google Mail", // optional;
"default_icon": "images/icon32.png" // optional;
}
“ default_popup”:“ popup.html” <---------------- 应删除
下一步是显示特定标签的“页面操作”。我不知道为什么,但是由于某些原因,它是可见的且处于活动状态,当您单击它时,它将向您显示上下文弹出菜单
chrome.pageAction.show(integer tabId, function callback)
在后台脚本中完成此操作后
`chrome.pageAction.onClicked`
应该触发该事件。希望对您有所帮助。