无法调用未定义的chrome-extension方法'create'

时间:2012-08-28 01:24:14

标签: google-chrome-extension

当我完成我的Chrome扩展程序时,我发现错误:

 Uncaught TypeError: Cannot call method 'create' of undefined chrome-extension://dpfgkakomehcgdcnigflmkcfngeaamlc/js/background.js:46

injectScript startLiveReload init

我用它是这个

  

mainfest.json“background”:{       “scripts”:[“js / background.js”]}

和background.js之类的

var readMenuItemId = chrome.contextMenus.create({
  "title" : "阅读模式",
  "type" : "normal",
  contexts : [ "selection" ],
  documentUrlPatterns: ["http://*/*", "https://*/*"],
  "onclick" : genericOnClick
});

我不知道哪里出错

2 个答案:

答案 0 :(得分:7)

您需要在清单文件中添加权限contextMenus才能使用此对象:

"permissions": [
    "contextMenus"
],

答案 1 :(得分:1)

刚刚离开错误消息(我刚遇到类似的问题)。它说

  

无法调用未定义的方法'create'

如此简单地将代码包装在if-block中调用chrome.contextMenus.create函数的位置将阻止TypeError污染您的DevTools控制台:

if (chrome.contextMenus !== undefined) {
    chrome.contextMenus.create({ /* etc */ });
}

此外,当窗口未完成加载时,也未定义chrome.contextMenus。因此,这样的修复可能更相关,而不是:

window.onload = () => {
    chrome.contextMenus.create({ /* etc */ });
};