使用 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多个评论就可见一斑,现翻译如下. 让我们开门见山吧:做一个 ...
随机推荐
- 转载 mybatis-plus配置控制台打印完整带参数SQL语句
问题背景 通常我们开发的时候,需要联合控制台和Navicat/PLSQL等工具进行语句的拼接检查,如果只是输出了一堆???,那么将极大降低我们的效率.因此我们需要输出完整的SQL语句以便调试. Upd ...
- baomidou的dynamic-datasource读写分离实现和加入AOP根据方法名选择库
文档 https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter/wikis/pages maven <depende ...
- ChannelInboundHandlerAdapter和SimpleChannelInboundHandler区别
ChannelInboundHandlerAdapter和SimpleChannelInboundHandler是我们在使用Netty处理Handler时候很常用的两个继承类,虽然说二者实现的功能大致 ...
- Qt开发经验小技巧176-180
QCamera中获取设备的配置参数比如支持的分辨率集合等,需要先调用load后才能正确获取,或者关联stateChanged信号中判断状态是否是ActiveState,然后再读取. //方法1:调用l ...
- Qt编写的项目作品7-视频监控系统
一.功能特点 (一)软件模块 视频监控模块,各种停靠小窗体子模块,包括设备列表.图文警情.窗口信息.云台控制.预置位.巡航设置.设备控制.悬浮地图.网页浏览等. 视频回放模块,包括本地回放.远程回放. ...
- Pycharm IDE中导入和移除python项目
1.Pycharm导入python项目 进入PyCharm后,点击File→Open,然后在弹窗中选择需要导入项目的文件夹: 打开了python项目后,需要配置该项目对应的python才可以正常运行: ...
- Unity TheHeretic Gawain Demo 异教徒Demo技术学习
<异教徒 Heretic>是Unity在2019年GDC大会上展示的一款技术Demo,部分资源于2020年中旬公开下载. 这款Demo主要用于展示Unity在数字人技术领域的最新进展,尤其 ...
- 当github遇到了Halloween,神奇的彩蛋出现了!
往年每个万圣节github都会修改配色方案,今天才发现,so记录这个不平凡的2020年的github的彩蛋,希望一切都会慢慢好起来.
- Solution -「JZOJ #5457」项链
\(\mathscr{Description}\) Private link. 给定一条有 \(n\) 个点的圆环和 \(m\) 中颜色, 求在位置旋转, 位置翻转, 颜色旋转等价的意义下, ...
- C# 开发电子印章制作工具 -- 附下载程序
前言 本人在业余时间,开发了一款电子印章制作软件.印章制作软件看似简单,其实不然. 比如对椭圆形印章而言,要求公司名称中的每一个字间隔相等,要求字的方向与椭圆曲线垂直. 要满足这些条件,需要复杂的计算 ...