使用' onclick '与上下文菜单子项目

Use `onclick` with context menu child items?

本文关键字:菜单 子项目 上下文 onclick 使用      更新时间:2023-09-26

我在我的manifest.json文件中有这个代码:

{
  "name": "Test",
  "description": "test of Context Menus",
  "version": "0.0.1",
  "permissions": [
    "contextMenus"
  ],
  "background": {
    "persistent": false,
    "scripts": ["background.js"]
  },
  "manifest_version": 2
}

这是我的background.js文件:

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的一个简单的部分-已经,我有一个问题!我知道编程是一项"有问题的"努力,但是,拜托!一定有人知道解决办法!

虽然你读了文档,但你读得不够认真:

onclick(可选):

当单击菜单项时将被回调的函数。事件页不能使用这个;相反,他们应该为chrome. contextmenu . onclicked .

注册一个侦听器。

你的"persistent": false在manifest中定义了一个Event页面。您应该重新构建代码以适应contextMenus,并使用基于事件的单击处理。

注:请注意,事件页面在概念上比持久的后台页面更难编程。如果这是一个学习的经历,你可以试着从事件页面切换。

机会不大,但是…

定义了chrome.runtime.onInstalled.addListener方法后,是否定义了showURL函数?还是BEFORE ?

如果你引用的东西是(尚未)定义的,那么它是可能的"var child1 = chrome.contextMenus. "创建"代码未正确完成。

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

(已经有一段时间了,我已经生疏了,可能在这件事上我错怪了别人)