1

我正在创建丰富的通知并为图像使用外部 iconUrl,但它失败了

var options = {
        type: "basic",
        title: title +  ' - ' + timestamp,
        message: lineItem,
        iconUrl: 'http://example.com/asgsdg.png'
      }

chrome.notifications.create((id++).toString(), options, function() {});

错误:notifications.create:无法下载所有指定的图像。

对于我的扩展,我在 CSP 中有以下内容:

"content_security_policy": "image-src 'self' http://example.com/*; object-src 'self'; script-src 'self'"

它适用于标准通知

window.webkitNotifications.createNotification(..., 'http://example.com/image.png',...);

我在图片图标不起作用的丰富通知中做错了什么?

4

3 回答 3

2

您的 CSP 中有一个错字:image-src 应该是 img-src。其次,您应该删除 URL 中的通配符。因此,您的 CSP 应为:

"content_security_policy": "img-src 'self' http://example.com/; object-src 'self'; script-src 'self'"

或者,您可以使用chrome.experimental.notification(丰富通知)和外部 URL中描述的解决方法:

var options = {
    type: "basic",
    title: title +  ' - ' + timestamp,
    message: lineItem
  }

var xhr = new XMLHttpRequest();
xhr.open("GET", "http://example.com/asgsdg.png");
xhr.responseType = "blob";
xhr.onload = function(){
    var blob = this.response;
    options.iconUrl = window.URL.createObjectURL(blob);
    chrome.notifications.create((id++).toString(), options, function() {});
};
xhr.send(null);

您可以在 Google Chrome 扩展文档中找到更多信息:http: //developer.chrome.com/apps/app_external.html#cross-origin

于 2013-08-19T23:58:22.867 回答
2

这在 Chrome 52 中对我有用:

清单.json

"permissions":[
  "https://avatars.githubusercontent.com/*"
]

然后以下 URL 起作用:

chrome.notifications.create({
  title: 'Hey',
  message: 'Hello',
  iconUrl: 'https://avatars.githubusercontent.com/u/1407390?'
})

在此处输入图像描述

于 2016-08-08T11:13:25.457 回答
0

要在通知中显示外部图像,用户应接受许可。在清单中,您必须输入:

 "permissions": [
    "notifications",
    "http:///","https:///"
  ]

或者只有您需要的外部网络,而不是“*”

如果您可以将图像复制到扩展文件夹,那么您将不需要这个,但我想您不能。</p>

于 2013-12-23T08:14:56.277 回答