From efd72e9e61cac79e50a3afe974092ee7ce209030 Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Tue, 8 Sep 2026 23:47:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=89=8D=E7=AB=AF=E7=95=8C=E9=9D=A2):=20O?= =?UTF-8?q?FDGo=20WebUI=E6=94=AF=E6=8C=81=E9=80=9A=E8=BF=87PWA=E5=85=B3?= =?UTF-8?q?=E8=81=94=E5=B9=B6=E6=89=93=E5=BC=80OFD=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/webui/ofdgo.js | 16 +++++++++++++--- assets/webui/ofdgo.json | 9 +++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/assets/webui/ofdgo.js b/assets/webui/ofdgo.js index 09b0003..3bced1d 100644 --- a/assets/webui/ofdgo.js +++ b/assets/webui/ofdgo.js @@ -146,7 +146,7 @@ el.toggleMetaButton.addEventListener("click", () => toggleSidebar("meta")); el.fontAddButton.addEventListener("click", () => openFontFile(el.fontInput)); el.fontDirectoryButton.addEventListener("click", () => openFontFile(el.fontDirectoryInput)); el.localFontButton.addEventListener("click", loadLocalFonts); -el.ofdInput.addEventListener("change", openSelectedOFD); +el.ofdInput.addEventListener("change", () => openOFD(el.ofdInput.files[0])); el.fontInput.addEventListener("change", openSelectedFonts); el.fontDirectoryInput.addEventListener("change", openSelectedFonts); el.prevButton.addEventListener("click", () => renderPage(state.pageIndex - 1)); @@ -274,6 +274,17 @@ async function boot() { await refreshLocalFontPermission(); setStatus(fontsRestored ? STATUS.ready : "字体读取失败"); setBusy(false); + if ("launchQueue" in window) { + let opening = Promise.resolve(); + window.launchQueue.setConsumer(({ files }) => { + if (!files.length) { + return; + } + opening = opening.then(async () => { + await openOFD(await files[0].getFile()); + }).catch((err) => showError(err, !state.doc)); + }); + } } catch (err) { setStatus("渲染引擎加载失败"); setEmpty(String(err.message || err)); @@ -533,8 +544,7 @@ function waitFor(predicate) { }); } -async function openSelectedOFD() { - const file = el.ofdInput.files[0]; +async function openOFD(file) { if (!file) { return; } diff --git a/assets/webui/ofdgo.json b/assets/webui/ofdgo.json index 0264546..44f14c0 100644 --- a/assets/webui/ofdgo.json +++ b/assets/webui/ofdgo.json @@ -7,6 +7,15 @@ "display": "standalone", "background_color": "#eef1f4", "theme_color": "#fbfcfd", + "file_handlers": [ + { + "action": "./", + "accept": { + "application/ofd": [".ofd"] + }, + "launch_type": "multiple-clients" + } + ], "icons": [ { "src": "./ofdgo.svg",