"无法下载所有指定的图像." 尝试在Chrome扩展程序上运行通知时

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)

它仍然无法正常工作!

是的,我在清单中设置了通知权限.

Mak*_*yen 6

URL必须相对于manifest.json(第一个代码块)

您的问题是,您没有向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的方式.

不允许使用外部URL(第二个代码块)

将iconUrl提供给您是不允许的.允许的URL类型清楚地列在文档中(参见上面的引用).实际上,限制是必须从扩展中完全提供图标的数据.您无法让Chrome通过传递外部网址从网络中获取图标数据iconUrl.这并不意味着您必须在扩展程序的.crx文件中包含图标数据(例如icon4.png).你可以自己获取数据; 将其转换为数据URL或blob URL; 然后将其提供给Chrome.但是,数据必须已存在于您的扩展程序中.