MV3 架构与内容脚本通信

共 39 题
#

1. Manifest V3 host_permissions 与 optional_permissions/optional_host_permissions 按需申请的工程价值

A 扩展在安装时即可获得全部 optional 权限,无需用户操作
B optional 权限必须在用户手势(如点击)回调中通过 chrome.permissions.request() 申请 ✓ 正确答案
C optional 权限与 host_permissions 完全等价,没有区别
D 申请 optional 权限后无法撤销,只能重装扩展
#

2. Manifest V3 Service Worker 替换 background page(持久后台)

A 它像 MV2 background page 一样常驻内存,直到扩展被卸载
B 它可以在任意嵌套回调中注册事件监听器
C 它可以使用同步 localStorage 保存状态
D 它空闲后会被终止,事件发生时重新唤醒,状态需持久化到 storage ✓ 正确答案
#

3. MV3 content_script 与 page context 的 MAIN world 注入与 ISOLATED 隔离的工程取舍

A 两者完全隔离,不共享 DOM
B 它们共享 DOM,但 JS 对象是否隔离取决于 world 类型 ✓ 正确答案
C MAIN world 注入无法访问页面脚本的全局变量
D ISOLATED world 可以访问页面脚本的所有全局对象
#

4. Message Passing(chrome.runtime.sendMessage、chrome.tabs.sendMessage、chrome.runtime.connect 长连接)

A chrome.runtime.connect 用于一次性消息传输
B 长连接在 MV3 中已完全废弃
C 在 onMessage 中异步响应时需返回 true 以保持 sendResponse 通道有效 ✓ 正确答案
D chrome.tabs.sendMessage 会把消息发送给扩展所有页面
#

5. MV3 扩展的 Service Worker 与 offscreen document 的协作

A 它用于替代 Service Worker 的所有能力
B 它只能由 content script 创建
C 它创建后永远驻留,无法关闭
D 它可在 Service Worker 中通过 chrome.offscreen.createDocument 创建,用于弥补无 DOM 的限制 ✓ 正确答案
#

6. Permissions(permissions 数组)与 Host Permissions(host_permissions)

A permissions 声明 API 权限,host_permissions 声明可访问的站点 ✓ 正确答案
B host_permissions 只能声明 storage 等内置权限
C 两者都可声明 API 权限
D 两者完全等价,可互换使用
#

7. Firefox 对 MV3(declarativeNetRequest、service worker)的支持现状与差异及 polyfill 策略

A Firefox 的 MV3 在部分特性(如持久化 background、webRequest)与 Chrome 存在差异 ✓ 正确答案
B 它必须使用 Chrome 专有 API 才能工作
C Firefox 完全不支持 MV3,只支持 MV2
D Firefox 与 Chrome 的 MV3 实现完全一致
#

8. MV3 扩展的 User Scripts API(独立权限申请)

A 它运行在 MAIN world,需要独立的 userScripts 权限 ✓ 正确答案
B 它只能由 Chrome 内置,扩展无法使用
C 它与 content_scripts 完全等价,没有区别
D 它不需要任何额外权限即可使用
#

9. Action API(toolbar popup)、Side Panel API(侧边栏面板)

A popup 适合轻量临时操作,side panel 适合需要持续驻留的交互 ✓ 正确答案
B Side Panel 只能用于临时弹窗
C chrome.action 无法显示 badge 文字
D Side Panel API 完全替代了 popup 功能
#

10. Manifest V3 的 declarativeNetRequest 与 webRequest 阻塞式的对比

A DNR 是过程式 API,需要扩展进程逐请求处理
B DNR 规则数量没有上限
C webRequest 阻塞式 API 在 MV3 中完全不受影响
D MV3 中 DNR 由浏览器内核声明式匹配,性能更好,且 webRequest 阻塞式被移除 ✓ 正确答案
#

11. chrome.storage.local/sync/managed 在配额与跨设备同步的工程取舍

A chrome.storage.sync 用于存大数据,配额为 10MB
B chrome.storage.local 存本地大数据,chrome.storage.sync 存跨设备小数据 ✓ 正确答案
C 三者配额完全相同
D chrome.storage.managed 是存私有数据的地方
#

12. native messaging 与本地进程通信的机制(Native Messaging Host manifest、stdio 协议)与适用场景

A 它通过 HTTP 协议与远程服务器通信
B 它通过 stdio 上的 4 字节长度前缀 + JSON 消息与本地进程通信 ✓ 正确答案
C 它不需要任何 manifest 即可工作
D 它只能与扩展自身代码通信
#

13. 扩展更新机制(update_url、更新检查间隔)与企业静默分发(策略强制安装、托管存储 managed storage)

A ExtensionInstallForcelist 策略可强制静默安装,配合 update_url 实现自托管分发 ✓ 正确答案
B managed storage 是用来存用户私人数据的
C 扩展只能从 Chrome Web Store 更新,无法自托管
D 更新检查间隔固定为 1 秒
#

14. offscreen document 的适用场景边界(DOM 解析、音频处理、剪贴板)与单实例限制

A 同一扩展可以创建任意多个 offscreen document
B 它可以在 main world 中创建
C 同一扩展同时只能有一个 offscreen document,且创建时需声明 reasons ✓ 正确答案
D offscreen document 创建后无法关闭
#

15. Content Scripts(content_scripts、隔离世界 ISOLATED)与页面脚本通信

A 页面脚本可以直接调用 content script 的函数
B 常用 window.postMessage 或 CustomEvent 桥接二者 ✓ 正确答案
C 二者无法通信
D content script 与页面脚本共享全部 JS 全局变量
#

16. Chrome Extension 的 chrome.tabs API 在批量操作的应用

A chrome.tabs.query 无需任何权限即可读取所有标签 URL
B 读取标签 URL 通常需要 tabs 权限或对应 host_permissions ✓ 正确答案
C chrome.tabs.discard 会关闭标签页
D 批量操作可以无限循环无性能影响
#

17. 跨扩展通信(chrome.runtime.sendMessage、externally_connectable)

A 任意扩展都能向其他扩展发送消息,无需配置
B onMessageExternal 用于接收扩展内部消息
C externally_connectable 用于声明允许通信的扩展 ID 与 Web 源 ✓ 正确答案
D externally_connectable 只影响 content script
#

18. chrome.scripting.executeScript 在动态注入脚本的工程价值

A 它只能在 manifest 中静态声明
B 它不需要任何权限
C 它允许运行时按需向指定 tab 注入函数或文件 ✓ 正确答案
D 它只能注入到 popup 页面
#

19. Chrome Extension 的 chrome.webRequest API 在 MV3 的迁移与限制

A 阻塞式 webRequest 在 MV3 中完全可用
B webRequest 与 declarativeNetRequest 完全等价
C MV3 中没有任何 webRequest API
D MV3 移除了阻塞式 webRequest,建议迁移到 declarativeNetRequest ✓ 正确答案
#

20. Content Script 的 matches 与 exclude_matches 在范围控制的工程价值

A matches 指定注入站点,exclude_matches 排除特定站点 ✓ 正确答案
B matches 与 exclude_matches 等价
C content_scripts 无法控制注入范围
D matches 用于排除站点,exclude_matches 用于指定注入站点
#

21. Chrome Extension 的 chrome.contextMenus 在右键菜单的工程应用

A 它需要 "storage" 权限
B 菜单项只能在 manifest 中声明
C contexts 用于指定菜单出现的上下文类型 ✓ 正确答案
D 右键菜单点击不会触发任何事件
#

22. Manifest V3 的 web_accessible_resources 在跨扩展共享的现代边界

A 资源一旦声明,所有页面都能访问
B MV3 已移除 web_accessible_resources
C MV3 中需为每个资源声明允许访问的匹配源 ✓ 正确答案
D 它只能用于 CSS
#

23. Chrome Extension 的 chrome.notifications 在系统通知的工程实践

A 它不需要任何权限
B 通知只能显示文本,无法设置按钮
C 创建通知需 "notifications" 权限,并支持点击/关闭事件 ✓ 正确答案
D 通知创建后无法被用户关闭
#

24. 扩展权限中 all_urls 与可选 Host Permissions 的工程取舍

A all_urls 不会触发任何权限警告
B optional_host_permissions 可减少安装警告,按需申请站点权限 ✓ 正确答案
C optional_host_permissions 与 all_urls 完全等价
D 扩展必须声明 all_urls 才能工作
#

25. Chrome Permissions/Permissions-Policy 与扩展 CSP extension_pages 的工程价值

A 扩展可以自由加载远程 CDN 脚本
B 扩展 CSP 与 Permissions-Policy 是同一个概念
C MV3 扩展页面默认禁止内联脚本与 eval ✓ 正确答案
D CSP 只影响 content script
#

26. Chrome Web Store 审核政策与开发者控制台管理

A 审核不关心权限是否过度
B 扩展可以随意远程下载代码
C 审核关注最小权限、无远程代码、隐私合规等 ✓ 正确答案
D 审核通过后无法再更新
#

27. 扩展安全最佳实践(最小权限、CSP、来源验证)

A 应尽量申请 all_urls 权限以方便开发
B 应保持严格 CSP、最小权限并对消息来源做校验 ✓ 正确答案
C 可以在扩展中硬编码 API 密钥
D 允许 eval 以提升灵活性
#

28. DevTools Extension API(chrome.devtools.panels、chrome.devtools.network)

A 它用于创建系统通知
B 它可创建 DevTools 面板并监听网络请求 ✓ 正确答案
C 它无法访问被检查页面
D 它只能在后台 service worker 使用
#

29. OAuth2 PKCE 在 Chrome Identity API(chrome.identity.launchWebAuthFlow)

A PKCE 不需要 code_challenge
B 隐式授权比 PKCE 更安全
C launchWebAuthFlow 无法发起 OAuth 流程
D PKCE 在授权码流程中引入 code_verifier 增强安全性 ✓ 正确答案
#

30. webextension-polyfill 与 browser/chrome 命名空间差异及 Promise/callback 兼容层工程价值

A 它提供统一的 Promise 风格 API,兼容 Chrome/Firefox ✓ 正确答案
B 它只能用于 Chrome 扩展
C 它把 browser API 改为 callback 风格
D 它只能解决 CSS 兼容问题
#

31. Enterprise 策略(ExtensionSettings/ExtensionInstallForcelist)对企业分发的作用与离线部署

A ExtensionSettings 只能控制安装来源
B 企业扩展无法离线部署
C ExtensionInstallForcelist 用于强制静默安装扩展 ✓ 正确答案
D 管理策略对扩展运行无影响
#

32. 跨浏览器扩展的 manifest.json 差异与条件编译(build-time manifest 生成)的工程实践

A 所有浏览器 manifest 完全一致
B manifest 只能手动维护
C 浏览器差异只能在运行时处理
D 构建期生成 manifest 可处理不同浏览器的字段差异 ✓ 正确答案
#

33. Manifest V3 替代 MV2 的关键变化

A MV3 用持久化 background page
B MV3 允许远程代码加载
C MV3 保留 webRequest 阻塞式 API
D MV3 用 Service Worker 替代后台页,并改用 declarativeNetRequest ✓ 正确答案
#

34. MV3 Service Worker 非持久化带来的状态保活问题与 alarms、chrome.storage、事件驱动重建的替代方案

A 应使用 chrome.storage 持久化状态并用 chrome.alarms 周期性唤醒 ✓ 正确答案
B Service Worker 不会终止
C 内存状态会一直保留,无需处理
D 定时器在终止后仍会执行
#

35. MV3 web_accessible_resources 在内容脚本与页面间通信的工程价值

A 它让页面脚本直接访问扩展内部对象
B 它通过暴露受控资源让页面加载,配合 DOM 事件通信 ✓ 正确答案
C MV3 中 WAR 已移除
D WAR 资源可被任意网站加载
#

36. Options Page、Offscreen Document API

A 两者都面向用户交互
B Offscreen Document 用于展示设置
C 两者等价
D Options Page 提供设置界面,Offscreen Document 补充后台 DOM 能力 ✓ 正确答案
#

37. Manifest V3 的 content_security_policy 在脚本执行的现代应用

A 它允许扩展页面加载远程脚本
B CSP 只影响 content script
C 扩展无法配置 CSP
D 默认禁止远程代码、eval 与内联脚本 ✓ 正确答案
#

38. chrome.declarativeNetRequest 规则上限与动态规则(updateSessionRules)

A 规则数量没有上限
B 动态与会话规则合计约 5000 条,用 updateSessionRules 管理 ✓ 正确答案
C 规则只能在 manifest 中声明
D 会话规则在扩展重装后仍保留
#

39. 扩展的 analytics 与 telemetry 在隐私合规(GDPR)下的工程边界与用户同意机制

A 扩展可以无限制收集用户浏览历史
B GDPR 只适用于 Web 页面
C 遥测不需要用户同意
D 需最小化收集、提供同意/退出机制并声明隐私政策 ✓ 正确答案