6

Ciao Ho ricevuto un errore quando ho chiamato chrome.notifications.create da una funzione nel js di un'app Chrome. Può essere usato bene da fuori da una funzione, ma quando all'interno di una funzione ottengo il seguente errore: "TypeError Uncaught: Impossibile leggere la proprietà 'creare' di non definito"Errore durante l'utilizzo di chrome.notifications.create "Uncaught TypeError: Impossibile leggere la proprietà 'create' di undefined"

Ecco il codice:

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 
} 

Grazie, Sono un noob quando si tratta di applicazioni js e chrome, quindi ogni aiuto è apprezzato :)

risposta

13

Ci sono 2 possibili cause.

  • Si sta tentando di utilizzare questo da content script. Non è possibile: gli script di contenuto sono molto limitati in ciò che le API di Chrome possono chiamare.

    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

    In tal caso, è necessario delegare questa chiamata a uno script di fondo: send a message dallo script contenuti, entrare in uno script di background e eseguire l'azione.

  • Si sta tentando di richiamarlo da uno script di estensione, ma non ha dichiarato l'autorizzazione "notifications".

    In tal caso, la correzione è banale: è sufficiente aggiungere l'autorizzazione.

+0

Hey, sei ancora in grado di aiutare –

6

Hai aggiunto le autorizzazioni di notifica chrome al file manifest.json?

aggiungendo permissions: ["notifications",//other permissions here]

Le autorizzazioni si occupa di ciò che è e non sta caricato nel proprio interno, e ciò che si ha accesso anche.

+0

Questo è meglio che la mia risposta. – erikdstock

+0

Ho già avuto questo nel file manifest.json grazie tho. Sono davvero confuso – pizza1talia

+0

Ho appena esaminato la documentazione, penso che la funzione di callback debba avere il parametro notificationID come "function callback (notificationId) {...}". Se questo non funziona, prova a rimuovere il riferimento alla funzione di callback dalla funzione create() quindi è solo '... create (opzioni);' –

0

Ho un caso per questa domanda indefinita quando utilizzo chrome.notifications.

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

Ma il mio 'icon_86.png' non si trova nella cartella delle immagini.

Soluzione: Sarà ok quando uso la mia icona corretta.

('icon_86.png', è nella mia cartella principale del progetto)

Problemi correlati