使用 Trae 辅助开发一个网页文本高亮插件

项目概述
本插件是一个用于在网页上高亮显示选中文本的工具,支持多种颜色选择、高亮复制和删除等功能。插件基于 Edge 扩展测试开发。
目前只大致开发了内容交互脚本和插件弹出页,后台管理页暂未开发。
项目结构
c:\Users\lc\Documents\前端项目代码\Egde高亮插件
├── content/
│ ├── content.js // 核心逻辑代码
│ └── highlight.css // 高亮样式
├── popup/
│ ├── popup.css // 弹出页样式
│ ├── popup.html // 弹出页HTML
│ └── popup.js // 弹出页逻辑
└── manifest.json // 插件配置文件
功能概览
存储结构
使用 chrome.storage.local 管理高亮的存储信息,其存储结构如下
[url]
├── item
│ ├── id
│ ├── color
│ ├── startXPath
│ ├── endXPath
│ ├── textFingerprint
│ ├── contextFingerprint
│ ├── before
│ ├── after
startXPath、endXPath 是之前尝试使用 startConatiner、endContainer 的 XPath 以及它们的偏移量来确定 Range 的时候添加的,这个方法是不准确的,因为偏移量会受其它高亮的影响。所以它两可以删除。

核心功能
- 高亮管理
- 通过
PageHighlightStorage类管理高亮信息- 使用 chrome.storage.local 实现数据持久化
- 支持添加、删除、更新和查询高亮记录
- 通过
- 高亮创建
- 通过
saveHighlightInfo保存高亮信息- 使用
getXPath获取元素路径 - 通过
generateTextFingerprint和generateContextFingerprint生成文本指纹和上下文指纹
- 使用
- 通过
- 高亮恢复
- 通过
restoreHighlights恢复已保存的高亮- 使用
createRangeByFingerprint根据指纹重新创建Range对象,能处理跨节点的高亮,匹配算法确保高亮位置准确 - 采用Levenshtein算法进行文本匹配
- 使用
- 通过
- 高亮操作
- 通过
createToolbox创建操作工具框- 支持颜色切换、删除和复制高亮内容
- 使用
applyHighlightToRange将高亮应用到文本范围
- 通过
- 与插件弹出页交互
- 通过 chrome.tabs.query、chrome.tabs.sendMessage 和 通过 chrome.tabs.onMessage 建立消息通信,实现清除页面全部功能的按钮
- 错误处理
- 自动清理无效的高亮记录
- 处理各种边界情况
- 提供详细的日志输出
dawnkylin/edge-ext-text-highlighter: A web extension for highlighting text
使用 Trae 辅助开发一个网页文本高亮插件的更多相关文章
- 10款jQuery文本高亮插件
[编者按]本文作者为 Julian Motz,主要介绍十款 jQuery 文本高亮插件的现状.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 很多应用或网站都为用户提供搜索关键词的方法.为了 ...
- 开发一个简单的chrome插件-解析本地markdown文件
准备软件环境 1. 软件环境 首先,需要使用到的软件和工具环境如下: 一个最新的chrome浏览器 编辑器vscode 2. 使用的js库 代码高亮库:prismjs https://prismjs. ...
- 一个C#语法高亮插件
语法高亮对程序员阅读代码来说有着不小的帮助,虽然VisualStudio本身支持C#语法高亮,但也只是对关键字.类名.字符串等少数元素加了标记,而我们代码中主题:变量.函数.属性.事件等都没有进行高亮 ...
- 开发一个简单的babel插件
前言 对于前端开发而言,babel肯定是再熟悉不过了,工作中肯定会用到.除了用作转换es6和jsx的工具之外,个人感觉babel基于抽象语法树的插件机制,给我们提供了更多的可能.关于babel相关概念 ...
- bootstrap开发一个简单网页。
CSS代码: body{ padding-top: 50px; padding-bottom: 50px; overflow: auto!important; ...
- 在微信小程序中使用富文本转化插件wxParse
在微信小程序中我们往往需要展示一些丰富的页面内容,包括图片.文本等,基本上要求能够解析常规的HTML最好,由于微信的视图标签和HTML标签不一样,但是也有相对应的关系,因此有人把HTML转换做成了一个 ...
- 从零开始, 开发一个 Web Office 套件 (1): 富文本编辑器
这是一个系列博客, 最终目的是要做一个基于HTML Canvas 的, 类似于微软 Office 的 Web Office 套件, 包括: 文档, 表格, 幻灯片... 等等. 富文本编辑器 万里长征 ...
- 从零开始, 开发一个 Web Office 套件 (2): 富文本编辑器
书接前文: 从零开始, 开发一个 Web Office 套件 (1): 富文本编辑器 这是一个系列博客, 最终目的是要做一个基于HTML Canvas 的, 类似于微软 Office 的 Web Of ...
- [转]让你的网页文本框增加光晕效果与提示,水印(类似QQ2011)
本文转自:http://www.cnblogs.com/xiaofengfeng/archive/2013/01/28/2880344.html 让你的网页文本框增加光晕效果(类似QQ2011) 我们 ...
- 【转载国外好文】代工开发一个iOS应用没有那么容易
导读:这是来自新加坡的 iOS 开发者 Kent Nguyen 发表在1月底的一篇博文.这篇吐槽文在 iOS 开发圈子里流传甚广,从原文150多个评论就可见一斑,现翻译如下. 让我们开门见山吧:做一个 ...
随机推荐
- Spring源码阅读(一):使用IDEA搭建Spring5.0.x源码阅读环境
说明 Spring源码阅读环境配置如下: Spring 5.x版本 Gradle 4.8.1 JDK8 IDEA2020.1 win10 搭建步骤 1. 下载Spring源码 下载地址:Github链 ...
- 创建没有构造函数的NumberFormat
我有以下课程: import java.text.NumberFormat; public static class NF { public static NumberFormat formatSha ...
- 一个GLSL Shader的格式化算法(LALR解析器)
一个GLSL Shader的格式化算法(LALR解析器) 在进行OpenGL程序开发时,我需要自行解析`string`类型的Shader代码,抽取出里面的某些变量名和subroutine名. 由于找不 ...
- Qt音视频开发24-视频显示QOpenGLWidget方式(占用GPU)
一.前言 采用painter的方式绘制解码后的图片,方式简单易懂,巨大缺点就是占CPU,一个两个通道还好,基本上CPU很低,但是到了16个64个通道的时候,会发现CPU也是很吃紧(当然强劲的电脑配置另 ...
- Qt编写ERP库存库房发货电子看板
一.前言 有了之前可视化大屏电子看板系统的经验,要做这个ERP库存库房发货电子看板,可以说是水到渠成轻车熟路,技术难度比之前做过的各种大屏系统的子模块都要简单.由于库存库房发货数据的特殊性,基本上都是 ...
- 开源轻量级 IM 框架 MobileIMSDK v6.1.2 发布!
一.更新内容简介 本次更新为次要版本更新,进行了若干优化(更新历史详见:码云 Release Nodes).可能是市面上唯一同时支持 UDP+TCP+WebSocket 三种协议的同类开源IM框架. ...
- 阿里云IP遭受DDOS攻击 快速切换IP实践
阿里云IP遭受DDOS攻击 快速切换IP实践 #1 介绍 运行平台: 阿里云 访问链路: 域名 -> 负载均衡EIP -> 容器 网站无法访问,查询服务运行正常,查询公网流量异常高后断流了 ...
- Python学习(六)——配套《PyTorch深度学习实战》
1. NumPy介绍 这张图片介绍了Python中两个非常重要的科学计算库:NumPy和SciPy,以及它们的核心功能和特性. NumPy NumPy(Numerical Python)是一个开源的P ...
- CH32V203F6P6-TSSOP20测试之02---点灯成功
一.问题思考 直接用官方提供的例程,为何下载程序后没有什么响应,难道自己设计的电路有什么不妥? 于是,对于电路进行具体分析,结果发现: 第一.官方的BOOT0采用杜邦线连接,在芯片手册好像找不到关于B ...
- Solution Set - 冬日纪行(前半)
目录 0.「集训队互测 2018」「LOJ #2504」小 H 爱染色 ✡️ 1.「LOJ #6402」yww 与校门外的树 2.「集训队互测 2019」「LOJ #3075」组合数求和 ✡️ 3.「 ...