首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chrome扩展开发: chrome.contextMenus为null

Chrome扩展开发: chrome.contextMenus为null
EN

Stack Overflow用户
提问于 2014-02-17 00:56:57
回答 1查看 3.1K关注 0票数 8

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

目前,我的扩展没有出现问题,但是当我检查控制台日志时,我会看到以下错误日志:

未定义的TypeError:不能调用未定义的方法“创建”

在代码行上:

代码语言:javascript
复制
var id = chrome.contextMenus.create({
        "title": title, "contexts": [context],
        "onclick": genericOnClick
    });

所以问题是,chrome.contextMenus在这里出现了。我发现它可能与权限有关,但我的manifest.json文件中有contextmenus权限。下面是清单文件中的权限块:

代码语言:javascript
复制
  "permissions": [
    "contextMenus",
    "notifications",
    "<all_urls>"
  ],

除此之外,我的扩展应该是正常的。那么为什么我会在日志上看到这个错误呢?如果chrome.contextMenus是空的,我应该简单地添加一个空检查来不做任何事情吗?或者我应该等待初始化它(我不知道如何使用旧风格的-without循环)?

下面是导致此错误的代码块:

代码语言:javascript
复制
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不太熟悉。我怎样才能解决这个问题?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-18 09:38:38

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

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

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

content.js

代码语言:javascript
复制
        var requestData = {"action": "createContextMenuItem"};
        //send request to background script
        chrome.extension.sendRequest(requestData);

background.js:

代码语言:javascript
复制
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中的代码之后重新加载扩展。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21819021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档