第八部分 — 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 参考资料

相关推荐
鹤卿1235 小时前
(OC)UI学习——网易云仿写
ui·ios·objective-c
一个被程序员耽误的厨师10 小时前
04-实践篇-让AI生成可视化页面-ai-json-ui的落地实践
人工智能·ui·json
秋雨梧桐叶落莳11 小时前
iOS——QQ音乐仿写项目总结
学习·macos·ui·ios·mvc·objective-c·xcode
俏皮小混子14 小时前
山东大学软件学院项目实训-创新实训-计科智伴(六)——个人博客(后端运行后真实调整)
人工智能·笔记·学习·ui
默子昂1 天前
ollama 自定义ui
开发语言·python·ui
星栈独行1 天前
Makepad 应用如何读文件、调接口、保存数据
前端·程序人生·ui·rust·github
wuhuhuan1 天前
playwright-getByAltText
ui·playwright
狼哥16861 天前
《新闻资讯》四、视频模块实现指南
ui·华为·音视频·harmonyos
为何创造硅基生物2 天前
LVGL
c++·ui
星栈独行2 天前
Rust + Makepad 应用怎么打包发布:Windows、macOS、Linux 全平台交付
windows·程序人生·macos·ui·rust