折腾Chrome 插件,怎么给右键菜单增加“选项”?

折腾Chrome插件不必感到头大,尤其是当我们想要增强用户与网页的互动时。这一章,我们就来聊聊如何为我们的“智能笔记”插件添加一个实用的小魔术——在右键菜单上添加一个“选项”,从而让用户能够不费吹灰之力地将所选文本加入到他们的笔记中。

manifest.json 更新

让我们先从manifest.json着手,给文件添上contextMenus的味道,并且为上下文菜单项设置适当的调味料。

{
  "manifest_version": 3,
  "name": "智能笔记",
  "version": "1.0",
  "permissions": [
    "contextMenus",
    "activeTab"
  ],
  "background": {
    "service_worker": "background.js"
  },
  "action": {
    "default_popup": "popup.html",
    "default_icon": "icon.png"
  },
  "icons": {
    "48": "icon.png"
  }
}
background.js 更新:

紧接着,让我们在background.js里搅和一番,创建一个新的上下文菜单项。只要用户一选择文本,我们的菜单项就跃跃欲试,准备闪亮登场。

// 设置上下文菜单项
chrome.runtime.onInstalled.addListener(() => {
  chrome.contextMenus.create({
    id: 'saveNote', // 上下文菜单项的唯一标识符,一块身份牌
    title: '将“%s”添加到智能笔记', // %s 代表选中的那块肉——用户选中的文本
    contexts: ['selection'] // 只在用户捕获了文字的时候显示这个选项
  });
});

// 监听上下文菜单项的点击事件
chrome.contextMenus.onClicked.addListener((info, tab) => {
  if (info.menuItemId === 'saveNote') {
    // 找到选中的文字,藏在info.selectionText里
    const selectedText = info.selectionText;
    console.log(`选中的文本:“${selectedText}”`);
    
    // 添加存储逻辑还早,但知道在哪儿加是个好开始
    // ...
  }
});

在上述代码中,chrome.contextMenus.create方法是用来创建一个新的上下文菜单项的。此方法接受一个参数对象,其中contexts字段指定了菜单项应该出现的上下文,也就是说,它定义了这个菜单项可以在什么情况下被显示。

contexts字段是一个字符串数组,允许你指定多种不同的上下文类型,这些类型定义菜单项何时应该出现。例如,当你选中了页面上的文本、图片、链接,或是在页面的不同部分点击右键时,都可以显示不同的菜单项

以下是一些可能的contexts值:

  • "all":在任何上下文中都显示菜单项。
  • "page":当用户点击页面上的任何地方时显示。
  • "frame":当用户在框架上点击时显示。
  • "selection":只有当用户选择了页面上的文本时才显示。
  • "link":当用户点击链接时显示。
  • "editable":当用户点击输入字段时显示。
  • "image":当用户点击图片时显示。
  • "video":当用户点击视频时显示。
  • "audio":当用户点击音频时显示。

对于“智能笔记”插件,我们使用了["selection"]作为上下文,这意味着我们的上下文菜单项只会在用户选择了页面上的文本之后出现。这是非常适合添加笔记功能的,因为通常用户会先选择他们想要添加笔记的文本,然后通过上下文菜单来进行操作。

所以,contexts字段在chrome.contextMenus.create方法中起到了非常重要的限制与定位作用,它确保了菜单项只在合适的上下文中被触发,提供了用户友好和准确的交互方式。

运行/测试

完成后,别忘了重启插件,给它点时间重新拾起刚才的任务。再打开网页,用鼠标像往常一样选择文本,右键,你将发现一个新的选项“将**添加到智能笔记”在那神秘地出现了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

就这样,你的Chrome插件多了一点魔法,上下文菜单得到了新伙伴。用户只需轻轻一点,选中的文本便跃入笔记之中。我们利用chrome.contextMenusAPI不费吹灰之力完成了这一切,现在,我们的插件正踏着稳健的步伐向前进发。

下一章,我们将拓展我们的插件魔法库,通过内容脚本来处理用户的标注行为,并在网页上妙手偶得,展示这些标记以供世人瞻仰。

### 实现Chrome扩展程序中的自定义右键菜单功能 为了在Chrome浏览器中创建一个能够向选中文本添加自定义右键菜单项的扩展,开发者可以利用`contextMenus` API来完成这一目标[^1]。 #### 创建Manifest文件 首先,在项目的根目录下建立名为`manifest.json`的配置文件。此文件用于声明扩展的基本信息及其权限需求: ```json { "manifest_version": 3, "name": "Custom Context Menu", "version": "1.0", "permissions": [ "contextMenus" ], "background": { "service_worker": "background.js" } } ``` #### 编写Background脚本 接着编写背景页面逻辑,即`background.js`,用来监听用户的操作并响应特定事件: ```javascript // 当用户点击上下文菜单时触发该函数 function onContextMenuClick(info, tab) { console.log(`Selected text: ${info.selectionText}`); } // 向已有的默认右键菜单增加新的选项 chrome.contextMenus.create({ id: 'customMenu', title: 'Do Something with Selected Text', contexts: ['selection'] // 只有当存在选区的时候才会显示这个条目 }); // 注册回调处理程序 chrome.contextMenus.onClicked.addListener(onContextMenuClick); ``` 上述代码片段展示了如何注册一个新的上下文菜单命令,并指定其仅适用于被选取的文字区域;同时设置了点击后的行为——这里简单打印出了所选文字到控制台日志中。 通过这种方式,便可以在Chrome浏览器内成功集成针对选定文本的个性化快捷方式支持了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值