こんにちは私はchromeアプリのjsで関数の内部からchrome.notifications.createを呼び出すとエラーが発生します。関数の外部からは問題なく使用できますが、関数内では次のようになりますエラー:
Uncaught TypeError:undefinedのプロパティ '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アプリに関しては初心者なので、助けていただければ幸いです:)
考えられる原因は2つあります。
コンテンツスクリプト からこれを使用しようとしています。できません。コンテンツスクリプトは、呼び出すことができるAPIがChrome.
ただし、コンテンツスクリプトにはいくつかの制限があります。彼らがすることはできません:
以下を除いて、chrome。* APIを使用します。
extension
(getURL
、inIncognitoContext
、lastError
、onRequest
、sendRequest
)i18n
runtime
(connect
、getManifest
、getURL
、id
、onConnect
、onMessage
、sendMessage
)storage
その場合、この呼び出しをバックグラウンドスクリプトに委任する必要があります。 メッセージを送信 コンテンツスクリプトから、バックグラウンドスクリプトで取得し、アクションを実行します。
拡張スクリプトから呼び出そうとしていますが、"notifications"
権限を宣言していません。
その場合、修正は簡単です。権限を追加するだけです。
マニフェスト.jsonにchrome通知権限を追加しましたか?
permissions: ["notifications",//other permissions here]
を追加します
権限は、拡張機能にロードされているものとロードされていないもの、およびアクセスできるものを扱います。
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'、プロジェクトのルートディレクトリにあります)