第八部分 — UI 表面 options 页面模式

18.1 目的

选项是您持久化设置的用户界面。 与弹出窗口不同,它们可以是一个真正的页面,具有导航和帮助文本。

18.2 使用场景 / 避免使用场景

使用场景: 当你需要让用户能够编辑和再次访问的设置时, 或者需要一个帮助文本/隐私说明的地方。

避免使用场景: UI 真正微小且短暂(弹出窗口可能就足够了),或 你需要一个持久化的工具界面(考虑使用侧边栏)。

18.3 options_page vs options_ui (快速映射)

  • options_page: 以普通标签页/页面的形式打开。

  • options_ui: 可嵌入到 chrome://extensions 中(如果 open_in_tab: false)。

如果你不确定:使用 options_page(更简单的心理模型)。

18.4 最小化模式:加载默认设置 + 保存

options.js: CODE_BLOCK_71

18.5 检查列表

  • 始终使用默认值加载

  • 优先使用 sync 加载用户设置(如果在配额范围内)

  • 显示清晰的"已保存"状态

最小示例

一个最小化的 MV3 安全异步消息处理器(适合作为模板):

javascript 复制代码
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
  (async () => {
    if (msg?.type !== "PING") return;
    sendResponse({ ok: true });
  })().catch((err) => sendResponse({ ok: false, error: String(err) }));
  return true; // keep channel open for async
});

18.6 常见问题

  • 频繁向 sync 写入(配额限制)

  • 存储密钥(不要)

18.7 参考资料

相关推荐
传奇开心果编程9 小时前
【SwiftUI娓娓道来】第3课:让界面活起来——交互与动画指南
学习·macos·ui·ios·swiftui·swift
zhchyun200810 小时前
【Unity UI 进阶】仿 Element UI 打造企业级 Unity UI 组件库(10)
ui·unity·游戏引擎
传奇开心果编程10 小时前
【Jetpack Compose进阶学与练】第14课:系列收尾复习总结;Compose项目常见坑点汇总;学习路线与后续学习方向
android·学习·ui·kotlin·android jetpack
kiros_wang13 小时前
渐变/阴影/滤镜⾼阶⽤法:统⼀项⽬UI、精简冗余组件
ui·harmonyos
沫璃染墨19 小时前
《Qt从零入门系列(十一):Qt事件机制详解——从QEvent到鼠标、键盘与定时器事件》
c++·qt·ui·硬件工程·交互·个人开发·qt5
rhett. li21 小时前
用 AI 写 C++ 桌面 UI:TRAE + nim_duilib 实战指南
c++·人工智能·ui
传奇开心果编程1 天前
【Flutter入门练中学】第3课:滚动与列表
android·学习·flutter·ui·ios
兰亭妙微UI设计公司1 天前
兰亭妙微B 端交互设计:横向 & 纵向步骤条完整使用指南
ui
Java后端的Ai之路1 天前
SSE 接口设计 vs Agent UI:四个开源项目,把「模型吐词」和「界面更新」拆开后,我看懂了差距
ui·开源·sse·agui·agentui
传奇开心果编程2 天前
【Flutter入门练中学】第8课:动画与过渡
android·学习·flutter·ui·ios