6

こんにちは私は、chromeアプリケーションのjs内の関数からchrome.notifications.createを呼び出すときにエラーが発生します。機能外部から細かい使用されるが、関数の中で、私は次のエラーを取得する際にすることができます:chrome.notifications.createを使用するとエラーが発生しました。 "Uncaught TypeError:プロパティ 'create'が未定義です"

を:「キャッチされない例外TypeErrorをプロパティを読み取ることができません未定義の 『作成』」ここでは、コードです:

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から使用しようとしています。あなたはできません:コンテンツスクリプトは、彼らが呼び出すことができるどのようなChrome APIで非常に限られています。その場合

    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

あなたのmanifest.jsonにクロム通知の権限を追加しましたか?であり、あなたの拡張にロードされたありえない、とあなたがあまりにもアクセス権を持っているものとpermissions: ["notifications",//other permissions here]

権限のお得な情報を追加

+0

これが私の答えよりも優れています。 – erikdstock

+0

私はすでにmanifest.jsonファイルにこれを持っています。私は本当に混乱しています – pizza1talia

+0

ドキュメントを見て、あなたのコールバック関数は 'function callback(notificationId){...}'のようなnotificationIDパラメータを持つ必要があると思います。それがうまく動作しない場合は、create()関数からコールバック関数のリファレンスを削除してみてください。ちょうど '... create(options);' –

0

chrome.notificationsを使用すると、この未定義の質問が1つあります。

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'、それは私のプロジェクトのルートディレクトリにある)

関連する問題