电子书在线阅读体验设计:格式、权限、转换、进度和移动端
本文目录
图书角由书架、上传/审核、文件处理、阅读器、权限和进度组成。用户看到的是“打开一本书”,系统实际要处理目录解析、长内容排版、图片、字体、网络中断、受限文件和跨设备状态。
格式能力要诚实分层
| 格式 | 常见路径 | 主要限制 |
|---|---|---|
| EPUB | 浏览器端解析章节、目录、重排文字 | 不同阅读器的脚本、字体、固定版式与 CSS 支持有差异 |
| 原生浏览器或 PDF.js 页面视图 | 固定页面适合扫描件;手机文字缩放、横向移动和 OCR 搜索可能较差 | |
| TXT | 分段/虚拟列表自定义排版 | 编码、换行、超长行和超大文件要处理 |
| HTML | 经过净化并隔离的阅读视图 | 可包含脚本、外链、追踪像素和恶意样式,不能直接注入主页面 |
| MOBI/AZW3/其他 | 服务器端队列转换为受支持格式 | 转换可能失败、耗时、改变排版或遇到 DRM;不能承诺所有文件都可读 |
上传时展示真实支持范围和限制。浏览器原生直读的格式与服务端转换状态分开显示:queued、processing、ready、failed、unsupported。进度不能伪造;失败时给出可行动原因、重试入口和原文件安全状态。
阅读器交互
手机优先:正文列宽舒适、字号/行距/页边距可调、白天/护眼/夜间主题、亮度只在支持的 API 下提示、点击区域适合拇指、目录和进度可快速展开。顶部工具在滚动时可收起,目录面板不遮住正文;横竖屏切换后重新布局。PC 可提供目录、页码/进度、搜索、双页模式和快捷键,但不要把桌面控制栏缩成手机窄屏的拥挤菜单。
EPUB 的分页和滚动模式要做成明确选项。保存 rendition 当前 CFI/章节与百分比,进度同步做节流并使用版本/时间解决多设备冲突;离线阅读可先本地保存,再在线合并。退出时不应因每个滚动事件都请求服务端。长文本采用分段或虚拟化,章节切换后释放旧 DOM、监听与对象 URL。
权限和文件传输
书架元数据权限与文件权限分离;公开书可发现,登录书只向适当主体签发阅读链接,管理员私有书不进入公开搜索。下载/阅读 URL 短时有效且校验当前书籍状态,原件和转换副本同级保护。HTTP 使用 Range 时要验证起止范围、授权和 Content-Disposition;私有内容不得进入公共 CDN 缓存。
任何上传格式都应限制大小、解码文件名、校验内容类型、生成服务端文件名并存 web root 外。转换器读取不可信文件,需限制 CPU、内存、输出大小和时长,采用最新解析库并清理临时目录。封面只作为公开缩略图服务,不能通过封面目录暴露正文文件。
加载、错误与无障碍
先显示书籍元数据、加载进度和上次阅读位置,再启动对应解析器。超大书支持取消和重试;网络失败区分鉴权过期、链接失效、转换未完成和暂时不可用。目录、按钮和弹窗支持键盘、读屏标签与焦点恢复;字体缩放不应造成横向溢出。错误不能只显示在控制台。
测试清单
覆盖短/长 EPUB、多章节、含图、RTL、嵌入字体、固定布局、坏 ZIP、加密/DRM、TXT 多编码、超大 PDF、横竖屏、刷新续读、重复登录、角色撤销、断网、转换失败和移动端低内存。用公开授权或自建样本测试,避免上传未经许可的商业书籍作为公开示例。
进度需要明确隐私模型:匿名浏览可仅存本机;登录后同步到账号,同时提供清除历史入口和设备冲突规则。书籍换版本后 EPUB CFI 可能失效,应保存文件版本并提供按章节/百分比继续的降级定位。朗读、搜索和批注等功能要沿用书籍权限与版权边界,不因个人笔记或浏览器缓存而泄露内容。
参考:W3C EPUB 3.3 Reading Systems、epub.js API、Calibre ebook-convert。
Live Notes
留言提交后会先进入审核,审核通过后对其他读者公开。