esp*_*sp0 1 javascript google-chrome google-chrome-extension google-chrome-devtools
脚本:
chrome.notifications.create(
'name-for-notification',{
type: 'basic',
iconUrl: 'icon4.png',
title: "This is a notification",
message: "hello there!"
});Run Code Online (Sandbox Code Playgroud)
每次我运行它,我都会收到错误
运行notifications.create时未经检查的runtime.lastError:无法下载所有指定的图像.
但这就是事情,"icon4.png"与我的脚本,背景在同一个文件中. 你自己看.
我不知道为什么它不起作用,图标就在那里.我也试过用这个:
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!"
});Run Code Online (Sandbox Code Playgroud)
它仍然无法正常工作!
是的,我在清单中设置了通知权限.
您的问题是,您没有向Chrome提供一个URL,该URL提供iconUrl相对于您的manifest.json的URL .该iconUrl文档状态 [重点煤矿]:
URL可以是数据URL,blob URL或相对于此扩展的.crx文件中的资源的URL
您似乎提供了一个相对于background.js脚本位置的URL,而不是相对于您的manifest.json.这可以通过manifest.json与background.js不在同一目录中来确定.如果没有你提供你的manifest.json,就不可能准确地告诉你这个URL必须是什么.但是,它需要是一个相对于manifest.json文件的路径,类似于引用bakground.js的方式.
将iconUrl提供给您是不允许的.允许的URL类型清楚地列在文档中(参见上面的引用).实际上,限制是必须从扩展中完全提供图标的数据.您无法让Chrome通过传递外部网址从网络中获取图标数据iconUrl.这并不意味着您必须在扩展程序的.crx文件中包含图标数据(例如icon4.png).你可以自己获取数据; 将其转换为数据URL或blob URL; 然后将其提供给Chrome.但是,数据必须已存在于您的扩展程序中.