Chrome插件开发

Chrome插件开发

写一个Chrome插件,在鼠标选中文本后展示"解释"按钮,用户点击该文本后将文本发送给后端,然后展示后端返回的结果

编写一个Chrome插件需要以下几个步骤:

1.创建一个新的文件夹,例如叫做myExtension。

2.在myExtension文件夹中,创建一个名为manifest.json的文件,内容如下:

javascript 复制代码
{
  "manifest_version": 2,
  "name": "Text Explanation",
  "version": "1.0",
  "permissions": ["contextMenus"],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  }
}

manifest.json中各个字段说明

manifest_version: 这个字段定义了manifest文件的版本,目前必须为2。

name: 这个字段定义了插件的名称。

version: 这个字段定义了插件的版本号。

permissions: 这个字段定义了插件需要的权限。在这个例子中,我们需要contextMenus权限,以便创建上下文菜单。

background: 这个字段定义了插件的背景页面或者背景脚本。背景页面或者脚本是插件的一部分,它在插件安装后就会运行,并且在浏览器打开期间一直运行。在这个例子中,我们定义了一个背景脚本background.js。

scripts: 这个字段定义了背景脚本的文件名。

persistent: 这个字段定义了背景脚本是否持久运行。如果设置为false,那么当插件不活跃时,背景脚本会被暂停,以节省系统资源。

以上就是manifest.json文件中各个字段的含义。这个文件是Chrome插件的必要组成部分,它定义了插件的基本信息和行为。

3.创建一个名为background.js的文件,内容如下:

javascript 复制代码
// 创建上下文菜单
chrome.contextMenus.create({
  title: "解释",  // 菜单项的标题
  contexts:["selection"],  // 菜单项将出现在哪些上下文中,这里是选中的文本上下文
  onclick: function(info, tab) {  // 点击菜单项时的事件处理函数
    var selectedText = info.selectionText;  // 获取选中的文本
    var url = new URL(tab.url);  
    var domain = url.hostname;  //获取选中文本所在的域名

    // 使用fetch API发送一个POST请求到后端
    fetch('https://your-backend-api.com/explain', {
      method: 'POST', 
      headers: {
        'Content-Type': 'application/json', 
      },
      body: JSON.stringify({text: selectedText, domain: domain}),  // 请求体,包含了选中的文本和域名
    })
    .then(response => response.json())  // 将响应体解析为JSON
    .then(data => {
      alert(data.explanation);  // 显示返回的explanation字段
    })
    .catch((error) => {
      console.error('Error:', error);  // 打印错误信息
    });
  }
});

以上代码创建了一个上下文菜单项,当用户选中文本并右键点击时,会显示一个"解释"的选项。当用户点击这个选项时,会将选中的文本发送到后端API,并将返回的解释显示在一个弹出框中。

注意,你需要将https://your-backend-api.com/explain替换为你的后端API的实际地址。

打开Chrome,进入chrome://extensions/页面,开启"开发者模式",然后点击"加载已解压的扩展程序",选择你创建的myExtension文件夹。

现在,当你在网页上选中文本并右键点击时,应该可以看到"解释"的选项。点击这个选项,就会将选中的文本发送到后端,并显示返回的解释。

注意,由于Chrome的安全策略,你的后端API需要支持CORS(跨源资源共享)

function(info, tab)是Chrome插件上下文菜单的点击事件处理函数,其中info对象包含了关于点击事件的信息。常用的字段有:

menuItemId: 被点击的菜单项的ID。

parentMenuItemId: 如果点击的菜单项是子菜单,这个字段表示其父菜单项的ID。

mediaType: 如果点击的元素是媒体元素,这个字段表示其类型,可能的值有"image"、"video"、"audio"。

linkUrl: 如果点击的元素是链接,这个字段表示链接的URL。

srcUrl: 如果点击的元素是图片,这个字段表示图片的URL。

pageUrl: 这个字段表示当前页面的URL。

frameUrl: 如果点击的元素在一个iframe中,这个字段表示iframe的URL。

selectionText: 如果用户选中了文本,这个字段表示选中的文本。

editable: 这个字段表示点击的元素是否可编辑。

在Chrome插件的上下文菜单点击事件处理函数中,`tab`对象包含了关于当前标签页的信息。常用的字段有:

  1. `id`: 标签页的ID。这是一个唯一的标识符,可以用来在后续的API调用中指定标签页。

  2. `index`: 标签页在当前窗口中的索引。

  3. `windowId`: 标签页所在窗口的ID。

  4. `highlighted`: 如果标签页被高亮显示(例如,它是当前活动的标签页或者被选中的标签页),这个字段为true。

  5. `active`: 如果标签页是当前活动的标签页,这个字段为true。

  6. `pinned`: 如果标签页被固定,这个字段为true。

  7. `url`: 标签页的URL。

  8. `title`: 标签页的标题。

  9. `favIconUrl`: 标签页的收藏夹图标的URL。

以上就是`tab`对象中的常用字段,你可以根据需要在事件处理函数中使用这些字段。

相关推荐
雪芽蓝域zzs几秒前
第十二节:完整用户管理 CRUD 页面(表格分页、新增 / 编辑弹窗、删除、Mock 接口)
前端·javascript·vue.js
深念Y12 分钟前
NativeScript 移动端开发踩坑记录
前端·ui·vue·安卓·移动端·native·原生
HackTwoHub17 分钟前
Butter_Cookie 黄油曲奇|浏览器渗透插件,云存储检测、XSS、SQL 注入一站式 Web 安全测试工具
前端·sql·安全·web安全·网络安全·自动化·xss
2601_9620662324 分钟前
golang超详细基础入门教程_golang教程
前端·python·golang
单线程1213826 分钟前
从案例分析 Vue3 Tokenizer 源码二
前端·javascript·vue.js
单线程_0136 分钟前
从案例分析 Vue3 Tokenizer 源码二
前端·javascript·vue.js
山甫aa1 小时前
【从零开始的 Web 后端学习】文件上传一篇搞定(MultipartFile + 本地存储 + 阿里云 OSS 保姆级教程)
前端·学习·阿里云
风骏时光牛马1 小时前
AIRAGDebug智能检索链路异常定位与调试分析
前端
ljt27249606612 小时前
Flutter笔记--envied
前端·笔记·flutter
Flynt2 小时前
React Router v8 升了之后,我花了两天才把项目跑起来
前端·typescript·preact