Chrome Side Panel 侧边栏

Side Panel 是什么 Chrome 窗口右侧可以展开的一栏,和当前网页并排显示。Google 的说法是「a new companion surface that allows users to use tools alongside the content they are browsing」:一个伴随页面的界面,让用户一边看网页一边用工具。 它分两层: 浏览器自带的侧边栏:书签、阅读清单等 Chrome 自己的功能。 扩展的侧边栏:扩展通过 Side Panel API(chrome.sidePanel)在这一栏里显示自己的页面。 时间线 时间 版本 变化 2022-03 Chrome 99 稳定版出现侧边栏,内容是书签和阅读清单(9to5Google 报道;Google 自己的博客写的是 2022 年 5 月加入) 2023-05 Chrome 114 扩展可用 Side Panel API,只支持 Manifest V3,需要 sidePanel 权限 2023-08 Chrome 116 新增 sidePanel.open(),可以由扩展主动打开,但必须在用户操作(点击、快捷键、右键菜单等)里调用 为什么要有 Side Panel API API 出现之前,扩展想做侧边栏,只能用 content script 往每个网页里注入一个 <div>。Google 在发布 API 时给的理由: ...

Created 12126-10-12 · Updated 12126-10-12 · 1 min · 131 words · -

Chrome Extension 开发笔记

chrome extension content script, 只能访问 dom, 不能访问页面 js 变量和函数 Injected Script, 被插入到页面里的 js 代码 chrome://extensions puzzle button: chrome extension 图标后面的拼图按钮 develop chrome extension doc https://developer.chrome.com/docs/extensions/mv3/ javascript web api: https://developer.mozilla.org/en-US/docs/Web/API chrome api: https://developer.mozilla.org/en-US/docs/Web/API html: https://web.dev/learn/html/ css: https://web.dev/learn/css/ javascript: https://developer.mozilla.org/en-US/docs/Learn/JavaScript chrome extension development overview: https://developer.chrome.com/docs/extensions/mv3/devguide/ chrome extension 的构成 The manifest, manifest.json, 唯一一个必须要存在于 extension 根目录的文件 The service worker, service worker 监听 chrome 的各种事件, 可以调用 Chrome api, 但是不能直接操作页面内容 Content scripts: content script 可以直接在页面中执行 js 代码, 可以直接操作 DOM, 还可以跟 service worker 通信 The popup and other pages content script 与 service worker 的分工和通信 各自负责什么 对比项 content script service worker(background) 运行位置 注入到网页里,每个匹配的 tab(以及 all_frames 打开时的每个 frame)各一份 整个扩展只有一个,运行在扩展自己的后台 DOM 能读写所在页面的 DOM 没有 DOM,也没有 window、document、localStorage 页面的 JS 变量 访问不到,运行在 isolated world 访问不到 可用的 chrome API 只有一小部分:chrome.runtime(发消息、getURL 等)、chrome.storage、chrome.i18n 按 manifest 里申请的 permissions 全部可用:tabs、scripting、cookies、alarms、contextMenus 等 网络请求 fetch() 按所在页面的 origin 处理,受页面 CORS 限制 对 host_permissions 里的域名 fetch() 不受 CORS 限制 生命周期 跟着页面走,页面刷新或关闭就没了 事件驱动,空闲约 30 秒被回收,有事件再拉起(见下一节) 一句话概括:content script 负责“页面里看得见的部分”,比如读取用户选中的文字、在页面上插入按钮或浮层;service worker 负责“页面之外的部分”,比如调用后端 API、保存登录 token、管理 tab、响应扩展图标点击和右键菜单。两边都做不了对方的事,所以绝大多数扩展功能都是两者配合完成的。 ...

Created 21216-04-21 · Updated 4046-10-04 · 4 min · 801 words · -