使用 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多个评论就可见一斑,现翻译如下. 让我们开门见山吧:做一个 ...
 
随机推荐
- 【C#】【报错解决】找不到请求的Net Framework Data ProVider。可能没有安装。
			
如题报错截图如上,解决方法如下 第一步:找到[引用]中的MySql.Data中的版本号 第二步,在Web.config中添加如下配置 <system.data> <DbProvide ...
 - pip 安装 Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1123)'))
			
1.问题 1.1 问题截取 pip install redis -i https://pypi.tuna.tsinghua.edu.cn/simple Looking in indexes: http ...
 - Spring Boot + K8S 中的滚动发布、优雅停机、弹性伸缩、应用监控、配置分离
			
前言 K8s + SpringBoot实现零宕机发布:健康检查+滚动更新+优雅停机+弹性伸缩+Prometheus监控+配置分离(镜像复用) 配置 健康检查 健康检查类型:就绪探针(readiness ...
 - 问题解决:Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist
			
https://cloud.tencent.com/developer/article/1993317 大家都知道Centos8于2021年年底停止了服务,大家再在使用yum源安装时候,出现下面错误& ...
 - rsync+ssh同步备份文件
			
定期对web代码或重要的文件做同步异地服务器备份,防止服务器故障严重磁盘损坏时文件丢失的问题. 备份服务器:192.168.200.134 目标服务器:192.168.201.65 rsync同步命令 ...
 - Qt编写地图综合应用51-离线瓦片地图下载
			
一.前言 写这个离线地图下载器的初衷,就是为了方便自己的几个需要离线地图的程序,客户需求,既然地图程序已经可以支持离线地图,那如何获取到这些离线瓦片地图文件是个关键,而且这是这个功能的关键,拿到这些一 ...
 - 国产系统中标麒麟neokylin上的视频监控系统
			
一.功能特点 (一)软件模块 视频监控模块,各种停靠小窗体子模块,包括设备列表.图文警情.窗口信息.云台控制.预置位.巡航设置.设备控制.悬浮地图.网页浏览等. 视频回放模块,包括本地回放.远程回放. ...
 - python-nmap实现python利用nmap扫描分析
			
目录 前言 python-nmap的基本使用 PortScanner扫描 PortScannerAsync异步扫描 python-nmap的源码分析 前言 Nmap是一个非常用的网络/端口扫描工具,如 ...
 - manim边做边学--动画联动
			
今天介绍Manim中的动画联动的技巧,在数学动画中,动画联动是常用的功能, 比如讲解平面几何中三角形与圆的位置关系变化,通过动画联动可以让圆沿着三角形的边滚动,或者让三角形的顶点在圆上移动,从而直观地 ...
 - Linux 提权指南
			
知屋漏者在宇下,知政失者在草野,知经误者在诸子. 导航 壹 - 密码搜寻 贰 - Sudo 命令 叁 - SUID/SGID 特权 肆 - 计划任务 伍 - 文件/目录 陆 - Linux 内核 柒 ...