Chrome 插件可以给浏览器增加自定义的功能,如在右键菜单中增加菜单项。这时候我们就可以根据需要添加一些功能,如划词右键跳转翻译网站。
新增配置文件 manifest.json
创建目录,新增 manifest.json 文件,它是 Chrome 插件的核心配置文件,定义权限、资源及扩展行为的基础设置。
Chrome 加载解压缩的扩展时,读取到该文件时就会判断该目录为插件。
permissions 定义所需权限:
- contextMenus:操作右键菜单
- activeTab:临时访问当前激活的标签页
- scripting:动态注入/移除脚本
{
"manifest_version": 3,
"name": "自定义右键菜单",
"version": "1.0",
"permissions": ["contextMenus", "activeTab", "scripting"],
"background": {
"service_worker": "background.js"
},
"action": {}
}
background.js 定义右键菜单
service_worker 指定插件的后台服务脚本,监听扩展安装事件、定义右键菜单、处理右键菜单点击等都是在该文件中执行。
创建右键菜单项:
chrome.runtime.onInstalled.addListener(() => {
chrome.contextMenus.create({
id: "jumpToTranslateSite",
title: "翻译: %s", // %s 自动替换为选中文本
contexts: ["selection"] // 仅在选中文本时显示
});
});
监听菜单点击事件:
chrome.contextMenus.onClicked.addListener((info, tab) => {
if (info.menuItemId === "jumpToTranslateSite" && info.selectionText) {
const selectedText = info.selectionText.trim();
chrome.scripting.executeScript({
target: { tabId: tab.id },
func: (text) => {
console.log( `你选中的文本是:${text}`)
},
args: [selectedText]
});
}
});
定义菜单逻辑
此时就可以按照自己的需求,定制右键菜单功能了。如直接打开新窗口,跳转到翻译网站:
window.open(`翻译网站域名/dictionary/${text}`);
比起使用第三方的划词翻译软件,这样的功能可自由控制,简洁又灵活。
也可以创建多个子菜单,分别跳转到不同的词典中,或者一个菜单里直接跳到多个词典中,进行对比。
我们也可以根据其他需要,定制各种各样的菜单功能。