使用chrome.notifications.create时出现错误 "Uncaught TypeError: Cannot read property 'create' of undefined"。

16

嗨,当我在Chrome应用程序的js函数内调用chrome.notifications.create时,会出现错误。 在函数外部可以正常使用,但在函数内部时会出现以下错误:

Uncaught TypeError: Cannot read property 'create' of undefined

这是代码:

document.addEventListener('DOMContentLoaded', function () {
document.getElementById('submit').addEventListener('click', submit);
});
function submit() {
  var options = {
    type:"basic",
    title:"nameVal",
    message:"msgVal",
    iconUrl:"icon.png",
  };
  //notification options set
  chrome.notifications.create(options,callback);
  //notification set
}
function callback() {
  console.log("Notification succesfull");
  //notification confirmed
}

谢谢,我在js和Chrome应用方面是个新手,所以非常感谢您的帮助 :)

3个回答

30

有两种可能的原因。

  • 你正在尝试从内容脚本使用它。不行:内容脚本对可以调用的Chrome API有很大限制。

    但是,内容脚本有一些限制。他们不能:

    使用chrome.* APIs,除了:
    extension (getURL, inIncognitoContext, lastError, onRequest, sendRequest)
    i18n
    runtime (connect, getManifest, getURL, id, onConnect, onMessage, sendMessage)
    storage

    在这种情况下,您需要将此调用委派给后台脚本:从内容脚本发送消息,在后台脚本中获取并执行操作。

  • 你正在尝试从扩展程序脚本中调用它,但没有声明"notifications"权限。

    在这种情况下,修复方法很简单-只需添加权限。


13
你是否已经在你的manifest.json文件中添加了chrome通知权限?
添加permissions: ["notifications",//其他权限] 权限涉及你的扩展程序中加载和不加载的内容以及你可以访问的内容。

这比我的答案更好。 - erikdstock
我已经在manifest.json文件中有了这个,谢谢。但我真的很困惑。 - pizza1talia
刚刚查看了文档,我认为你的回调函数需要像这样带有notificationID参数:function callback(notificationId) {...}。如果这不起作用,请尝试从create()函数中删除回调函数引用,使其变成...create(options); - Byren Higgin

0

当我使用chrome.notifications时,我遇到了一个未定义的问题。

var options = {
            type: "basic",
            title: "Extention Title",
            message: 'Extention Message",
            iconUrl: "images/icon_86.png" // My Case:Error in iconUrl
        };

但是我的'icon_86.png'不在图像文件夹中。

解决方案:当我使用正确的iconUrl时,它将变得正常。

('icon_86.png'在我的项目根目录中)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接