From 645b98538e5899f5966ffa6066238e42427d00a8 Mon Sep 17 00:00:00 2001 From: DreamNya Date: Fri, 27 Jun 2025 01:09:12 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=20GM=5Fdownload=20?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/service/service_worker/gm_api.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/app/service/service_worker/gm_api.ts b/src/app/service/service_worker/gm_api.ts index 0ce875622..275176505 100644 --- a/src/app/service/service_worker/gm_api.ts +++ b/src/app/service/service_worker/gm_api.ts @@ -971,8 +971,9 @@ 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本地文件或基础下载选项直接下载 + const baseKeys = new Set(["url", "name", "saveAs", "onload"]); + if (params.url.startsWith("blob:") || Object.keys(params).every((key) => baseKeys.has(key))) { chrome.downloads.download( { url: params.url, From 169055708cbc7c9cd0e8ac0db2418865a7023f95 Mon Sep 17 00:00:00 2001 From: DreamNya Date: Fri, 27 Jun 2025 01:26:48 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20onload=20=E4=B8=8D?= =?UTF-8?q?=E7=94=9F=E6=95=88=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/service/service_worker/gm_api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/service/service_worker/gm_api.ts b/src/app/service/service_worker/gm_api.ts index 275176505..3d663f291 100644 --- a/src/app/service/service_worker/gm_api.ts +++ b/src/app/service/service_worker/gm_api.ts @@ -981,7 +981,7 @@ export default class GMApi { filename: params.name, }, () => { - sender.getConnect().sendMessage({ event: "onload" }); + sender.getConnect().sendMessage({ action: "onload" }); } ); return; From c5d0a580f422afe2d070a1fdfec4b5c15a93016f Mon Sep 17 00:00:00 2001 From: DreamNya Date: Fri, 27 Jun 2025 17:04:41 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20downloadMethod=20?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E7=94=A8=E4=BB=A5=E6=98=BE=E7=A4=BA=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E4=BD=BF=E7=94=A8=20chrome.downloads=20=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/service/content/gm_api.ts | 1 + src/app/service/service_worker/gm_api.ts | 5 ++--- src/template/scriptcat.d.tpl | 1 + src/types/scriptcat.d.ts | 1 + 4 files changed, 5 insertions(+), 3 deletions(-) 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 3d663f291..8a08754d7 100644 --- a/src/app/service/service_worker/gm_api.ts +++ b/src/app/service/service_worker/gm_api.ts @@ -971,9 +971,8 @@ export default class GMApi { @PermissionVerify.API() async GM_download(request: Request, sender: GetSender) { const params = request.params[0]; - // blob本地文件或基础下载选项直接下载 - const baseKeys = new Set(["url", "name", "saveAs", "onload"]); - if (params.url.startsWith("blob:") || Object.keys(params).every((key) => baseKeys.has(key))) { + // blob本地文件或显示指定downloadMethod为"chrome"则直接下载 + if (params.url.startsWith("blob:") || params.downloadMethod === "chrome") { chrome.downloads.download( { url: params.url, 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 };