使用chrome.notifications.create时出错“Uncaught TypeError:无法读取属性'create'of undefined”

时间:2016-01-20 22:59:03

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

嗨我从chrome应用程序的js中的函数内部调用chrome.notifications.create时出错。可以在函数外部使用,但在函数内部时我会收到以下错误:“未捕获的TypeError:无法读取未定义的属性'create'”

以下是代码:

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 个答案:

答案 0 :(得分:17)

有两种可能的原因。

  • 您正尝试使用content script中的此功能。您不能:内容脚本在他们可以调用的Chrome API中非常有限。

      

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

         

    使用chrome。* API,但以下情况除外:
      extensiongetURLinIncognitoContextlastErroronRequestsendRequest
      i18n
      runtimeconnectgetManifestgetURLidonConnectonMessagesendMessage
      storage

    在这种情况下,您需要将此调用委托给后台脚本:来自内容脚本的send a message,在后台脚本中获取并执行操作。

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

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

答案 1 :(得分:9)

您是否已将chrome通知权限添加到manifest.json?

添加 class AutomotiveManager { private bool isBeingTested { set { isBeingTested= false; } } private dialogResult MessageBoxResult { ///need help over here } }

权限处理您的扩展程序中加载的内容和未加载内容,以及您还可以访问的内容。

答案 2 :(得分:0)

当我使用chrome.notifications时,我有一个关于这个未定义问题的案例。

<p>hello world</p>
<p>hello world</p>
<p>hello world</p>
<p>hello world</p>

但我的&#39; icon_86.png&#39;不在图像文件夹中。

解决方案:当我使用正确的iconUrl时,它会没问题。

(&#39; icon_86.png&#39;,它位于我的项目根目录中)