From 374ee28f019528c33604918c02afd9c5f83bd184 Mon Sep 17 00:00:00 2001 From: truewhile <779943132@qq.com> Date: Sat, 10 Oct 2026 09:54:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=82=B9=E5=87=BB2=E6=AC=A1?= =?UTF-8?q?=E5=85=A8=E5=B1=8F=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/reader-ui-spec.md | 1 + web/src/hooks/useDoubleTap.test.ts | 29 +++++ web/src/hooks/useDoubleTap.ts | 134 ++++++++++++++++++++++++ web/src/hooks/useIsTouchDevice.ts | 28 +++++ web/src/pages/reader/ReaderComic.tsx | 2 + web/src/pages/reader/ReaderViewPage.tsx | 58 ++++++++-- 6 files changed, 244 insertions(+), 8 deletions(-) create mode 100644 web/src/hooks/useDoubleTap.test.ts create mode 100644 web/src/hooks/useDoubleTap.ts create mode 100644 web/src/hooks/useIsTouchDevice.ts diff --git a/docs/reader-ui-spec.md b/docs/reader-ui-spec.md index 8ab6bfd..4040fc6 100644 --- a/docs/reader-ui-spec.md +++ b/docs/reader-ui-spec.md @@ -104,6 +104,7 @@ - **文本型漫画源按图片下发**(`internal/service/reader` 的 `imageMarkersOnly`):拷贝漫画这类书源 `bookSourceType=0`(文本),正文规则直接给 ``,服务端把整行标签转成 `[img]<签名地址>` 标记行后类型仍是 `text`,前端就会走文本阅读器——分页把每张图当成一列,一屏只看得到一张,桌面端也谈不上双页铺开。现在 `GetContentForBook` / `LocalChapterContent` 在标记化之后判断「非空行全部是 `[img]` 标记」,是则把 `type` 改成 `image` 并给出 `images`,交由漫画阅读器渲染(整页缩放、双页铺开、进度按图片序号)。判定只认「全是标记」:混了正文的章节一律保持 `text`,孤立的 HTML 标签行(`
`/`
`)与空行当作无内容忽略,绝不吞掉可读文字。 - 鼠标滚轮翻页(仅翻页模式):向上滚=上一页,向下滚=下一页;菜单打开时也不翻页。鼠标滚轮一格一页(间隔至少 220ms,与翻页动画对齐),触控板小步长累计到阈值翻一页且一次手势只翻一页(避免惯性连翻)。`ctrl/cmd+滚轮` 保留浏览器缩放。 - **浏览器全屏(沉浸式)**:阅读页本身已经是 `fixed inset-0` 的独立布局(`/reader/*` 不套影视 Layout),所以屏幕上的留白只剩浏览器自带的地址栏/工具栏。底部动作行加「全屏 / 还原」,对 `readerRef` 调标准 Fullscreen API(`requestFullscreen` / `exitFullscreen`),进全屏前先收起菜单。按钮只在 `document.fullscreenEnabled === true` 时出现——**iOS 上的 Safari 至今不支持元素全屏**(只有 `