Chrome扩展程序,自定义上下文菜单项未显示

时间:2015-06-11 15:00:57

标签: google-chrome-extension

我知道在这个网站上已经多次询问过这个问题,例如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);

1 个答案:

答案 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文档中的说明:

  
      
  1. 如果您正在使用context menus API,请将字符串ID参数传递给contextMenus.create,并使用contextMenus.onClicked回调代替onclick参数{ {3}}。
  2.   

真正奇怪的是,该笔记是在最佳做法下提交的,而如果我不这样做,则扩展甚至无法正常工作。它实际上是必须做的