我的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 Extension API的一个简单部分 - 而且我已经遇到了问题!我知道编程是一个'有问题'的努力但是,加油!有人必须知道解决方案!
答案 0 :(得分:2)
虽然您已阅读the docs,但您还没有仔细阅读它们:
(可选)onclick:
单击菜单项时将回调的函数。 活动页面无法使用此功能;相反,他们应该为chrome.contextMenus.onClicked注册一个监听器。
清单中的"persistent": false
定义了一个“活动”页面。您应该restructure your code to fit,并使用contextMenus
的基于事件的点击处理。
P.S。:请注意,事件页面在概念上比持久性背景页面更难编程。如果这是一次学习体验,您可以尝试从事件页面切换。
答案 1 :(得分:0)
有点远但是......
在定义chrome.runtime.onInstalled.addListener方法后,您是否定义了showURL函数?或者之前?
如果您引用了尚未定义的内容,那么" var child1 = chrome.contextMenus.create"代码未正确完成。
尝试在chrome.runtime.onInstalled.addListener(...)行之前移动showURL定义。
(已经有一段时间了,我生锈了,可能会在这上面咆哮错误的树。)