MV3入门疑问:Service Worker中读取剪贴板与操作上下文菜单可行吗?
Chrome扩展Service Worker脚本相关问题解答
一、你判断的没错,那段剪贴板读取代码确实无法在Service Worker中运行
原因很明确:
- Service Worker运行在无DOM的独立环境里,没有
document、document.body这类DOM对象,根本没法创建或操作textarea这类元素 document.execCommand("Paste")是依赖DOM的旧API,在Service Worker环境里完全调用不了
如果要在Service Worker里处理剪贴板,MV3可以用标准的navigator.clipboard.readText(),但得先在manifest里声明clipboardRead权限,而且这个API只能在用户触发的上下文(比如上下文菜单的点击回调)里调用。
二、chrome.contextMenus.create可以在Service Worker脚本中使用
只要你在扩展的manifest.json里声明了"contextMenus"权限,就能在Service Worker里正常调用这个方法创建上下文菜单。建议把菜单注册的逻辑放在Service Worker的启动阶段(比如顶层直接执行,或者install事件回调里),确保扩展加载时就能完成菜单注册。
内容的提问来源于stack exchange,提问作者fraz
相关产品推荐
相关产品推荐

