我正在为自己开发Google Chrome扩展程序。它为每个页面上图像的右键单击上下文菜单添加一个额外的菜单项。Chrome扩展程序开发:chrome.contextMenus为空
目前,我的扩建工程没有问题,但是当我检查控制台日志,我看到这个错误日志:
Uncaught TypeError: Cannot call method 'create' of undefined
与代码行:
var id = chrome.contextMenus.create({
"title": title, "contexts": [context],
"onclick": genericOnClick
});
所以问题是,chrome.contextMenus
来到null在这里。我发现它可能与权限有关,但我在我的manifest.json
文件中拥有contextmenus权限。以下是清单文件中的权限块:
"permissions": [
"contextMenus",
"notifications",
"<all_urls>"
],
而且,除此之外,我的扩展按原样工作。那么为什么我在日志中看到这个错误?我应该简单地添加一个空检查,如果chrome.contextMenus
为空什么也不做?或者我应该等待它初始化(我不知道如何做btw - 没有使用旧式的while循环)?
这里的代码,导致此错误块:
var contexts = ["image"];
for (var i = 0; i < contexts.length; i++) {
var context = contexts[i];
var title = "Do something";
var id = chrome.contextMenus.create({
"title": title, "contexts": [context],
"onclick": genericOnClick
});
}
function genericOnClick(info, tab) {
// some stuff
}
我不是很熟悉JavaScript。我该如何解决这个问题?
在此先感谢
更新:sendRequest和onRequest现在已过时。你应该使用sendMessage和onMessage。请参阅[这里](https://developer.chrome.com/extensions/messaging) – Peter