diff --git a/src/app/service/content/gm_api.ts b/src/app/service/content/gm_api.ts index c30cc746e..908407fbd 100644 --- a/src/app/service/content/gm_api.ts +++ b/src/app/service/content/gm_api.ts @@ -684,6 +684,7 @@ export default class GMApi { this.connect("GM_download", [ { method: details.method, + downloadMethod: details.downloadMethod || "xhr", // 默认使用xhr下载 url: details.url, name: details.name, headers: details.headers, diff --git a/src/app/service/service_worker/gm_api.ts b/src/app/service/service_worker/gm_api.ts index 0ce875622..8a08754d7 100644 --- a/src/app/service/service_worker/gm_api.ts +++ b/src/app/service/service_worker/gm_api.ts @@ -971,8 +971,8 @@ export default class GMApi { @PermissionVerify.API() async GM_download(request: Request, sender: GetSender) { const params = request.params[0]; - // blob本地文件直接下载 - if (params.url.startsWith("blob:")) { + // blob本地文件或显示指定downloadMethod为"chrome"则直接下载 + if (params.url.startsWith("blob:") || params.downloadMethod === "chrome") { chrome.downloads.download( { url: params.url, @@ -980,7 +980,7 @@ export default class GMApi { filename: params.name, }, () => { - sender.getConnect().sendMessage({ event: "onload" }); + sender.getConnect().sendMessage({ action: "onload" }); } ); return; diff --git a/src/template/scriptcat.d.tpl b/src/template/scriptcat.d.tpl index 7d3261789..9e1b7d28a 100644 --- a/src/template/scriptcat.d.tpl +++ b/src/template/scriptcat.d.tpl @@ -425,6 +425,7 @@ declare namespace GMTypes { interface DownloadDetails { method?: "GET" | "POST"; + downloadMethod?: "xhr" | "chrome"; url: string; name: string; headers?: { [key: string]: string }; diff --git a/src/types/scriptcat.d.ts b/src/types/scriptcat.d.ts index b321f6c80..6101299a0 100644 --- a/src/types/scriptcat.d.ts +++ b/src/types/scriptcat.d.ts @@ -425,6 +425,7 @@ declare namespace GMTypes { interface DownloadDetails { method?: "GET" | "POST"; + downloadMethod?: "xhr" | "chrome"; url: string; name: string; headers?: { [key: string]: string };