1

次を使用してリッチ通知を開こうとしています。

var options = {
    templateType: "basic",
    title: "John Doe",
    message: "Lorem ipsum",
    iconUrl: "https://www.MyExternalURL.com/image.jpg"
};

chrome.experimental.notification.create("notifyId", options, function(id) {
    console.log("Succesfully created notification");
});

しかし、何らかの理由でこれは機能しませんが、オプションを次のように置き換えると:

var options = {
    templateType: "basic",
    title: request.name,
    message: request.message,
    iconUrl: chrome.runtime.getURL("/images/cat.png"),
};

そして、通知は完全に機能します。

これが私のマニフェストファイルの重要なものです

{
"manifest_version": 2,
"name": ...,
"description": ...,
"version": ...,
"icons": { 
    ...
},
"content_scripts": [
    ...
],
"background": {
    "scripts": ["background.js"]
},
"permissions": [
    "tabs", 
    "experimental"
],
"web_accessible_resources": [
    "https://www.MyExternalURL.com/*"
] 

}

iconURLとして外部画像をどのように使用する必要がありますか?

4

2 に答える 2

1

スクリプトとオブジェクトのリソースは、拡張機能のパッケージからのみロードでき、Web全体からはロードできません。これにより、拡張機能が特別に承認したコードのみを実行するようになり、アクティブなネットワーク攻撃者がリソースのリクエストを悪意を持ってリダイレクトするのを防ぎます。

そのため、外部JPEGアイコンをロードするためのコードは機能しませんiconUrl: "https://www.MyExternalURL.com/image.jpg"

代わりに、https://www.MyExternalURL.com/image.jpgからファイルをダウンロードし、アプローチ#2のようにインラインに配置します。

さらにweb_accessible_resources、HTTP URL(S)を含むコンテンツは受け入れず、Webページのコンテキストで使用できると予想されるパッケージ化されたリソースのパス(パッケージルートを基準とする)を指定する文字列の配列のみを受け入れます。

参照

于 2013-03-04T06:13:53.433 に答える
1

Ajaxで外部画像のblobを取得し、変換されたデータURIを適用します。

var options = {
    type: "basic",
    title: "TITLE",
    message: "MESSAGE"
};

var xhr = new XMLHttpRequest();
xhr.open("GET", "https://www.MyExternalURL.com/image.jpg");
xhr.responseType = "blob";
xhr.onload = function(){
        var blob = this.response;
        options.iconUrl = window.URL.createObjectURL(blob);
        chrome.notifications.create("notifyId", options, function(notId){});
    };
xhr.send(null);
于 2013-08-02T08:22:19.113 に答える