fix: saveAs 优先,失败 fallback 直接下载
先尝试弹出保存对话框(saveAs: true),如果和 Chrome 设置冲突 则 fallback 到直接下载到默认文件夹。兼容所有 Chrome 设置。
This commit is contained in:
@@ -177,7 +177,12 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
|||||||
const stored = await chrome.storage.session.get(['pptxBase64', 'pptxFilename']);
|
const stored = await chrome.storage.session.get(['pptxBase64', 'pptxFilename']);
|
||||||
if (!stored.pptxBase64) throw new Error('没有待下载的数据');
|
if (!stored.pptxBase64) throw new Error('没有待下载的数据');
|
||||||
const dataUrl = 'data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64,' + stored.pptxBase64;
|
const dataUrl = 'data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64,' + stored.pptxBase64;
|
||||||
|
// 先尝试弹出保存对话框,失败则直接下载到默认文件夹
|
||||||
|
try {
|
||||||
|
await chrome.downloads.download({ url: dataUrl, filename: stored.pptxFilename, saveAs: true });
|
||||||
|
} catch (e) {
|
||||||
await chrome.downloads.download({ url: dataUrl, filename: stored.pptxFilename });
|
await chrome.downloads.download({ url: dataUrl, filename: stored.pptxFilename });
|
||||||
|
}
|
||||||
await chrome.storage.session.remove(['pptxBase64', 'pptxFilename']);
|
await chrome.storage.session.remove(['pptxBase64', 'pptxFilename']);
|
||||||
return { ok: true };
|
return { ok: true };
|
||||||
})()
|
})()
|
||||||
|
|||||||
Reference in New Issue
Block a user