【问题标题】:Chrome extension development: chrome.contextMenus is nullChrome 扩展开发:chrome.contextMenus 为空
【发布时间】:2014-03-16 03:43:35
【问题描述】:

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

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

未捕获的类型错误:无法调用未定义的“创建”方法

就一行代码:

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

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

  "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 不是很熟悉。我该如何解决这个问题?

提前致谢

【问题讨论】:

标签: javascript google-chrome google-chrome-extension google-chrome-devtools


【解决方案1】:

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

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

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

content.js

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

background.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 中的代码后还需要重新加载扩展。

【讨论】:

  • 更新:sendRequest 和 onRequest 现已过时。您应该使用 sendMessage 和 onMessage。见here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
相关资源
最近更新 更多