Kas*_*Lee 5 javascript download google-chrome-extension data-uri firefox-addon-webextensions
我已经通过使用Blob URL/Object-URL()解决了这个问题(感谢@DanielHerr)URL.createObjectURL(blob)
,但我仍然很好奇为什么在使用data:
URL 时存在此错误
我正在使用WebExtensions API为Chrome和Firefox创建扩展程序.
扩展程序随时间收集数据,我想实现一个功能,将其导出为CSV文件.
我尝试使用downloads.download()
下载文件,但是我收到错误:
错误:
data:text/csv;charset=utf-8;base64,{data...}
为downloads.download 输入参数选项的错误(错误处理URL:错误:URL拒绝访问).
我已经尝试添加"<all_urls>"
到permissions
键中manifest.json
,但这没有任何区别.
这是我正在使用的代码:
var csv = 'Hello, World!' // Real data goes here
var url = 'data:text/csv;charset=utf-8;base64,' +
window.btoa(unescape(encodeURIComponent(csv)))
chrome.downloads.download({'url': url})
Run Code Online (Sandbox Code Playgroud)
我似乎无法解决如何解决这个问题,所以我真的很感激帮助!谢谢!
我manifest.json
看起来像这样:
{
"manifest_version": 2,
"name": "Name",
"version": "1.0.0",
"description": "Description",
"icons": {
"16": "/icons/icon-16.png",
"32": "/icons/icon-32.png",
"48": "/icons/icon-48.png",
"64": "/icons/icon-64.png",
"96": "/icons/icon-96.png"
},
"applications": {
"gecko": {
"id": "@name",
"strict_min_version": "48.0"
}
},
"background": {
"scripts": ["/scripts/a.js"]
},
"permissions": [
"storage",
"tabs",
"activeTab",
"downloads",
"<all_urls>"
]
}
Run Code Online (Sandbox Code Playgroud)
a.js
包含要导出为CSV的代码.
我扯下了代码的其余部分下来,只有manifest.json
,a.js
和图标文件都离开了,但它仍然报同样的错误.
我通过使用Blob URL/Object-URL而不是数据URI解决了这个问题:
var csv = 'foo,bar,baz'
var blob = new Blob([csv], {type: "text/csv;charset=utf-8"})
chrome.downloads.download({
'url': URL.createObjectURL(blob),
'filename': 'file.csv',
})
Run Code Online (Sandbox Code Playgroud)