Update
I have 解决了这个问题(谢谢@丹尼尔赫尔 https://stackoverflow.com/users/3591628/daniel-herr)通过使用 Blob URL / 对象 URL (URL.createObjectURL(blob)
),但是我仍然很好奇为什么使用时会出现此错误data:
URLs
我正在使用 WebExtensions API 创建一个适用于 Chrome 和 Firefox 的扩展程序。
该扩展程序会随着时间的推移收集数据,我想实现一个功能将其导出为 CSV 文件。
我尝试使用downloads.download() https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/Downloads/download下载文件,但是我收到错误:
错误:参数选项类型错误(处理 url 时出错:错误:URL 的访问被拒绝data:text/csv;charset=utf-8;base64,{data...}
)用于下载。下载。
我尝试过添加"<all_urls>"
to the 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})
我似乎无法弄清楚如何解决这个问题,所以我将非常感谢您的帮助!谢谢你!
My 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>"
]
}
a.js
包含导出为 CSV 的代码。
我剥离了其余的代码,以便只manifest.json
, a.js
图标文件都留下了,但还是报同样的错误。