脚本:
chrome.notifications.create(
'name-for-notification',{
type: 'basic',
iconUrl: 'icon4.png',
title: "This is a notification",
message: "hello there!"
});
每次我运行它,我得到的错误
Unchecked runtime.lastError while running notifications.create:无法下载所有指定的映像。
但这里的事情,“icon4.png”是在同一个文件作为我的脚本,背景。See for yourself.
我不知道为什么它不工作,图标在那里。我也试过这样做:
chrome.notifications.create(
'name-for-notification',{
type: 'basic',
iconUrl: 'http://www.filehosting.org/file/details/671921/icon4.png',
title: "This is a notification",
message: "hello there!"
});
但它仍然不起作用!
是的,我在清单中设置了通知权限。
3条答案
按热度按时间z5btuh9x1#
URL必须相对于您的 * manifest.json *(第一个代码块)
您的问题是您没有向Chrome提供一个URL,该URL提供
iconUrl
作为相对于您的 * manifest.json * 的URL。iconUrl
文档指出[重点是我的]:URL可以是数据URL、blob URL或相对于此扩展名的.crx文件中的资源的URL
您似乎提供了一个相对于 background.js 脚本位置的URL,而不是相对于 manifest.json 的URL。这可以通过 * manifest.json * 与 * background.js * 不在同一个目录中来确定。如果你不提供你的 * manifest.json *,就不可能告诉你这个URL到底是什么。但是,它需要是相对于 * manifest.json * 文件的路径,类似于您引用 * bakground.js * 的方式。
不允许外部URL(第二个代码块)
您提供的
iconUrl
不允许。文档中明确列出了允许的URL类型(参见上面的引用)。实际上,限制是图标的数据必须完全从扩展内提供。你不能让Chrome从网络上获取图标的数据,只需要传递一个iconUrl
的外部URL。这并不意味着您必须包含图标数据(例如:icon4.png)。你可以自己获取数据;将其转换为数据URL或blob URL;然后将其提供给Chrome。但是,数据必须已经存在于您的扩展中。zwghvu4y2#
除了Makyen之外,这里还有一个我在扩展中使用过的例子。首先获取图像blob,然后将其转换为URL:
ssgvzors3#
这是一个老问题,但这里是解决这个问题的最快方法。对扩展内的资源(如图标)使用
chrome.runtime.getURL()
函数。