gpt4 book ai didi

javascript - Chrome 扩展开发 : chrome. contextMenus 为空

转载 作者:搜寻专家 更新时间:2023-11-01 04:52:03 25 4
gpt4 key购买 nike

我正在为自己开发一个 Google Chrome 扩展程序。它向每个页面上图像的右键单击上下文菜单添加了一个额外的菜单项。

目前,我的扩展没有问题,但是当我检查控制台日志时,我看到了这个错误日志:

Uncaught TypeError: Cannot call method 'create' of undefined

在代码行上:

var id = chrome.contextMenus.create({
"title": title, "contexts": [context],
"onclick": genericOnClick
});

所以问题是,chrome.contextMenus 在这里变为 null。我发现它可能与 permissions 有关,但我的 manifest.json 文件中有 contextmenus 权限。这是 list 文件中的权限 block :

  "permissions": [
"contextMenus",
"notifications",
"<all_urls>"
],

除此之外,我的扩展还能正常工作。那么为什么我会在日志中看到这个错误呢?如果 chrome.contextMenus 为空,我是否应该简单地添加一个空检查以不执行任何操作?或者我应该等待它被初始化(顺便说一句,我不知道该怎么做 - 不使用旧式 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 不是很熟悉。我该如何解决这个问题?

提前致谢

最佳答案

chrome.contextMenus 在内容脚本中未定义。

您可以使用 Chrome 控制台进行检查。

您需要在 background.js 脚本中创建上下文菜单项:

content.js

        var requestData = {"action": "createContextMenuItem"};
//send request to background script
chrome.extension.sendRequest(requestData);

背景.js:

function onRequest(request, sender, callback){    
if(request.action == 'createContextMenuItem'){
var contextItemProperties = {};
contextItemProperties.title = 'context menu item';
chrome.contextMenus.create(contextItemProperties);
}
}

//subscribe on request from content.js:
chrome.extension.onRequest.addListener(onRequest);

我很惊讶为什么文档没有提到您只能在后台页面中创建上下文菜单项。

修改background.js中的代码后还需要重新加载扩展。

关于javascript - Chrome 扩展开发 : chrome. contextMenus 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21819021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com