需在manifest.json中声明contextMenus权限并用background.js调用chrome.contextMenus.create()注册菜单项,同时确保chrome://policy中ContextMenusEnabled策略未被禁用。

你想在宙斯浏览器里对网页文字、图片或链接右键时,直接出现“复制链接”“搜索百度”“打开新标签页”这类快捷项,而不是只有默认的“复制”“保存图片”——这需要扩展明确声明权限、后台脚本注册菜单项,并绕过系统策略拦截。
确认扩展已启用上下文菜单权限
没有这项权限,右键菜单根本不会显示任何自定义条目,哪怕代码写得再完整也白搭。
1、点击浏览器右上角拼图形状的扩展图标 → 选择“管理扩展程序”。
2、找到你要配置的扩展(比如“QuickMenu Tools”或你自己开发的扩展)→ 点击右侧“详情”。
3、向下滚动到“权限”区域 → 【必须看到“上下文菜单”和“在所有网站上运行”同时被勾选】。
4、如果缺失“上下文菜单”,说明 manifest.json 文件里没加 "contextMenus" 字段,需手动补全并重新加载扩展。
通过 background.js 注册具体菜单项
光有权限还不够,必须用 chrome.contextMenus.create() 显式创建节点,否则浏览器压根不知道该显示什么。
方法一:添加“复制链接地址”功能
① 打开扩展的 background.js 文件;
② 插入以下代码(确保 runtime 权限已声明):chrome.contextMenus.create({ id: "copy-link", title: "复制链接地址", contexts: ["link"]});
③ 添加点击监听:chrome.contextMenus.onClicked.addListener((info, tab) => { if (info.menuItemId === "copy-link") { navigator.clipboard.writeText(info.linkUrl); }});
④ 保存后,在扩展管理页点击“重新加载”按钮生效。
方法二:为图片添加“以图搜图”快捷入口
在 background.js 中追加:chrome.contextMenus.create({ id: "search-by-image", title: "以图搜图(百度)", contexts: ["image"]});
再绑定跳转逻辑:chrome.contextMenus.onClicked.addListener((info, tab) => { if (info.menuItemId === "search-by-image") { chrome.tabs.create({ url: `https://image.baidu.com/search/url?ie=utf8&tn=baiduimage&word=&ct=201326592&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1627845699315_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&ctd=1627845699315%5E00_1552x816&iti=2097752&ct=&t=&surl=${encodeURIComponent(info.srcUrl)}` }); }});
注意:这行 URL 是百度识图接口,必须用 encodeURIComponent 包裹原始图片地址,否则含特殊字符会报错。
检查并绕过浏览器策略限制
企业设备或某些定制 ROM 可能通过策略强制禁用 contextMenus API,此时即使前两步全对,右键菜单依然空白。
1、在地址栏输入 chrome://policy 回车 → 查看当前生效策略;
2、重点查找 “ContextMenusEnabled” 或 “ExtensionSettings” 条目;
3、若发现其值为 false 或被设为 “blocked”,说明策略层已拦截;
4、普通用户无法修改该策略,需联系管理员,或改用无痕窗口临时启用(无痕模式下部分策略不生效);
5、【若策略显示为“unset”,但菜单仍不出现,请立即检查是否有其他扩展劫持了 contextmenu 事件——例如某些广告屏蔽插件会主动 preventDefault()】。


















