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状态。