我正在尝试将上下文菜单项添加到chrome应用程序中,但它根本没有显示。我读过的所有内容似乎都表明我在这里做对了,但显然我没有。
background.js:
var clickHandler = function(e) {
console.log('testing testing');
}
chrome.contextMenus.create({
"title": "Click Me",
"contexts": ["page", "selection", "image", "link"],
"onclick" : clickHandler
});
manifest.json:
{
"update_url": "https://clients2.google.com/service/update2/crx",
"name": "Test",
"description": "Test",
"manifest_version": 2,
"version": "3.2.3",
"kiosk_enabled": true,
"icons": {
"128": "icon_128.png",
"16": "icon_16.png"
},
"app": {
"background": {
"scripts": [ "background.js" ],
"persistent": false
}
},
"permissions": [
"http://*/", "https://*/", "webview", "storage", "power", "alwaysOnTopWindows", "idle", "contextMenus"
]
}
没有记录错误或类似的东西。该项目根本不会显示。我在这里想念什么?
您错过了文档中的一个小提示contextMenu
:
函数(可选)
onclick
单击菜单项时将回调的函数。活动页面无法使用此功能;相反,他们应该为注册一个监听器chrome.contextMenus.onClicked
您确实有一个“事件”页面("persistent": false
),因此适用于您。
Chrome会卸载该页面,并且对它的引用clickHandler
可能会丢失。相反,事件页面机制可确保如果您addListener
在页面上注册了事件,则会再次加载,再次addListener
应用该事件,然后执行您的侦听器。
所以:
var clickHandler = function(e) {
console.log('testing testing');
}
chrome.contextMenus.create({
"title": "Click Me",
"contexts": ["page", "selection", "image", "link"]
});
// Must be synchronously called on event page load,
// for instance in the top level code
chrome.contextMenus.onClicked.addListener(clickHandler);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句