Javascript 是否将“onclick”与关联菜单子项一起使用?

Javascript 是否将“onclick”与关联菜单子项一起使用?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我的manifest.json文件中有此代码: { "name": "Test", "description": "test of Context Menus", "version": "0.0.1", "permissions": [ "contextMenus" ], "background": { "persistent": false, "scripts": ["background.js"] }, "manifest_versio

我的
manifest.json
文件中有此代码:

{
  "name": "Test",
  "description": "test of Context Menus",
  "version": "0.0.1",
  "permissions": [
    "contextMenus"
  ],
  "background": {
    "persistent": false,
    "scripts": ["background.js"]
  },
  "manifest_version": 2
}
chrome.runtime.onInstalled.addListener(function() {
  var parent = chrome.contextMenus.create({"title": "TEST", "contexts":["all"], "id": "parent"});  
  var child1 = chrome.contextMenus.create({"title": "Test2", "parentId": "parent", "id": "child1", "onclick": showURL, "contexts": ["all"]});
});
这是我的
background.js
文件:

{
  "name": "Test",
  "description": "test of Context Menus",
  "version": "0.0.1",
  "permissions": [
    "contextMenus"
  ],
  "background": {
    "persistent": false,
    "scripts": ["background.js"]
  },
  "manifest_version": 2
}
chrome.runtime.onInstalled.addListener(function() {
  var parent = chrome.contextMenus.create({"title": "TEST", "contexts":["all"], "id": "parent"});  
  var child1 = chrome.contextMenus.create({"title": "Test2", "parentId": "parent", "id": "child1", "onclick": showURL, "contexts": ["all"]});
});
这是我的
showURL
函数(在
background.js
文件中)注意:这是在文档的最顶部

function showURL() {
alert(document.URL);
}
但是运行此命令会使
child1
项消失。为什么会这样

注意:当我删除
“onclick”:showURL时,
会显示
child1
项。

所以,我知道onclick的
有问题,但我不知道是什么

请帮帮我,我想不出代码出了什么问题!我认为根据谷歌的API文档,语法是正确的,那么有什么不对呢


这本来应该是一个学习项目——学习Chrome扩展API的一个简单部分——现在,我已经遇到了一个问题!我知道编程是一项“有问题”的工作,但是,加油!一定有人知道解决办法

有点遥不可及,但是

在定义chrome.runtime.onInstalled.addListener方法之后,是否定义showURL函数?还是以前

如果引用了(尚未)定义的内容,则“var child1=chrome.contextMenus.create”代码可能未正确完成

尝试将showURL定义移到chrome.runtime.onInstalled.addListener(…)行之前

(已经有一段时间了,我已经生锈了,可能是找错了方向。)

虽然你已经读过了,但你没有足够认真地阅读:

(可选)onclick:

单击菜单项时将回调的函数事件页面不能使用此选项;相反,他们应该为chrome.contextMenus.onClicked注册一个监听器。

清单中的
“persistent”:false定义了一个事件页面。您应该为
上下文菜单
使用基于事件的单击处理


注意:请注意,从概念上讲,事件页面比持久性后台页面更难编程。如果这是一种学习体验,您可以尝试从事件页面切换到其他页面。

我以前定义过它,但它不起作用。对不起,我应该在问题中说!哇!谢谢我现在觉得自己很愚蠢!我有一个问题:事件页面和背景页面有什么区别?如果你能简单地回答,我将不胜感激!基本上,每次事件页面闲置超过一秒钟左右时,它都会被破坏,但Chrome记住,对于某些事件,它需要再次“旋转”。这意味着需要小心使用事件侦听器,不能保持本地JS状态。