我知道在这个网站上已经多次询问过这个问题,例如this post。但是,Chrome升级如此之快,似乎这些解决方案不再适用于最新版本。我也查了official doc,似乎也没有用。
以下是我的文件:
的manifest.json
{
"name": "Try Context Menu",
"version": "0.0.1",
"permissions": [ "tabs", "contextMenus", "http://*/*", "https://*/*" ],
"background": {
"scripts": [ "background.js" ],
"persistent": false
},
"icons": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
},
"manifest_version": 2
}
background.js
function clickHandler() {
alert('great');
}
chrome.contextMenus.create({
"id": "qwertyuiop",
"title": "Click Me",
"contexts": ["page", "selection", "image", "link"],
"onclick" : clickHandler
});
chrome.contextMenus.onClicked.addListener(clickHandler);
答案 0 :(得分:4)
我仔细阅读了几个示例扩展程序' source code
由于我将"persistent"
设置为false
,因此扩展程序正在使用“事件页面”运行。因此,我的代码通过从onclick
:
chrome.contextMenus.create
来工作
chrome.contextMenus.create({
"id": "qwertyuiop",
"title": "Click Me",
"contexts": ["page", "selection", "image", "link"]
});
以下是Event Page文档中的说明:
- 如果您正在使用context menus API,请将字符串ID参数传递给
醇>contextMenus.create
,并使用contextMenus.onClicked
回调代替onclick
参数{ {3}}。
真正奇怪的是,该笔记是在最佳做法下提交的,而如果我不这样做,则扩展甚至无法正常工作。它实际上是必须做的。