系统:
- Manjaro Linux
- Chromium版本104.0.5112.79(官方版本(Arch Linux(64位(
当用户点击此MV3扩展的操作时,它会尝试将文件/text/Test.txt(与扩展打包(下载到下载目录:
https://github.com/GrippenDynamik/Download_Extension_File_MV3
manifest.json
{
"manifest_version": 3,
"name": "Download Extension File MV3",
"version": "1.0",
"action": {
"default_title": "Download Extension File MV3"
},
"background": {
"service_worker": "background.js"
},
"permissions": [
"downloads"
]
}
background.js
function onChanged(downloadDelta) {
console.log("MV3", "b) onChanged", "downloadDelta", downloadDelta);
}
async function onCreated(downloadItem) {
console.log("MV3", "a) onCreated", "downloadItem", downloadItem);
}
function onClicked(tab, onClickData) {
chrome.downloads.download({
conflictAction: "overwrite",
filename: "Test.txt",
saveAs: false,
url: chrome.runtime.getURL("text/Test.txt"),
});
}
chrome.downloads.onChanged.addListener(onChanged);
chrome.downloads.onCreated.addListener(onCreated);
chrome.action.onClicked.addListener(onClicked);
/text/Test.txt
This is a test.
结果:
- chrome.downloads.onCreated不报告任何错误
- chrome.downloads.onChanged报告NETWORK_FAILED(无其他(
我是做错了什么,还是无法下载带有扩展名的文件?
我知道我可以
- 获取((文件
- 将响应转换为数据URL
- 下载数据URL
但如果我能跳过步骤1和2,那就太好了。越简单越好。
和往常一样,问题出在MV3上。
https://bugs.chromium.org/p/chromium/issues/detail?id=1224027&q=下载。下载&can=2
"它不适用于chrome.downloads.download,后者不支持chrome扩展://scheme";
我不知道这是故意的,还是另一个MV3错误。
它在MV2:中完美工作
https://github.com/GrippenDynamik/Download_Extension_File_MV2
manifest.json
{
"manifest_version": 2,
"name": "Download Extension File MV2",
"version": "1.0",
"browser_action": {
"default_title": "Download Extension File MV2"
},
"background": {
"scripts": ["background.js"],
"persistent": false
},
"permissions": [
"downloads"
]
}
background.js
function onChanged(downloadDelta) {
console.log("MV2", "b) onChanged", "downloadDelta", downloadDelta);
}
async function onCreated(downloadItem) {
console.log("MV2", "a) onCreated", "downloadItem", downloadItem);
}
function onClicked(tab, onClickData) {
chrome.downloads.download({
conflictAction: "overwrite",
filename: "Test.txt",
saveAs: false,
url: chrome.runtime.getURL("text/Test.txt"),
});
}
chrome.downloads.onChanged.addListener(onChanged);
chrome.downloads.onCreated.addListener(onCreated);
chrome.browserAction.onClicked.addListener(onClicked);
/text/Test.txt
This is a test.