6

Привет Я получаю сообщение об ошибке при вызове chrome.notifications.create изнутри функции в js приложения Chrome. Может быть использован в порядке снаружи функции, но когда внутри функции я получаю следующее сообщение об ошибке: «неперехваченным TypeError: Не удается прочитать свойство„создать“неопределенных»Ошибка при использовании chrome.notifications.create «Uncaught TypeError: Не удается прочитать свойство« create »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 и хром-приложениях, поэтому любая помощь приветствуется :)

ответ

13

Возможны 2 причины.

  • Вы пытаетесь использовать это с помощью content script. Вы не можете: сценарии содержания очень ограничены в том, какие API Chrome они могут вызвать.

    However, content scripts have some limitations. They cannot:

    Use chrome.* APIs, with the exception of:
    extension ( getURL , inIncognitoContext , lastError , onRequest , sendRequest )
    i18n
    runtime ( connect , getManifest , getURL , id , onConnect , onMessage , sendMessage )
    storage

    В этом случае вам нужно передать этот вызов на фоне сценария: send a message из сценария контента, получить его в фоновом режиме сценария и выполнить действие.

  • Вы пытаетесь вызвать его из сценария расширения, но не объявили разрешение "notifications".

    В этом случае исправление тривиально - просто добавьте разрешение.

+0

Эй, вы все еще можете помочь –

6

Добавили ли вы разрешения на получение хрома на свой манифест.json?

добавления permissions: ["notifications",//other permissions here]

Позволения сделки с тем, что есть, и разве загружены в расширении, и то, что вы тоже имеете доступ.

+0

Это лучше, чем мой ответ. – erikdstock

+0

У меня уже было это в файле manifest.json спасибо tho. Я действительно смущен – pizza1talia

+0

Просто посмотрел документацию, я думаю, что ваша функция обратного вызова должна иметь параметр notificationID, например, 'function callback (notificationId) {...}'. Если это не работает, попробуйте удалить ссылку функции обратного вызова из функции create(), чтобы ее просто '... create (options);' –

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» отсутствует в папке с изображениями.

Решение: Это будет нормально, когда я использую свой правильный значок.

(«icon_86.png», это в моем проекте корневой каталог)