项目概述

本插件是一个用于在网页上高亮显示选中文本的工具,支持多种颜色选择、高亮复制和删除等功能。插件基于 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 的时候添加的,这个方法是不准确的,因为偏移量会受其它高亮的影响。所以它两可以删除。

核心功能

  1. 高亮管理

    • 通过 PageHighlightStorage 类管理高亮信息

      • 使用 chrome.storage.local 实现数据持久化
      • 支持添加、删除、更新和查询高亮记录
  2. 高亮创建
    • 通过 saveHighlightInfo 保存高亮信息

      • 使用 getXPath 获取元素路径
      • 通过 generateTextFingerprintgenerateContextFingerprint 生成文本指纹和上下文指纹
  3. 高亮恢复
    • 通过 restoreHighlights 恢复已保存的高亮

      • 使用 createRangeByFingerprint 根据指纹重新创建Range对象,能处理跨节点的高亮,匹配算法确保高亮位置准确
      • 采用Levenshtein算法进行文本匹配
  4. 高亮操作
    • 通过 createToolbox 创建操作工具框

      • 支持颜色切换、删除和复制高亮内容
      • 使用 applyHighlightToRange 将高亮应用到文本范围
  5. 与插件弹出页交互
    • 通过 chrome.tabs.query、chrome.tabs.sendMessage 和 通过 chrome.tabs.onMessage 建立消息通信,实现清除页面全部功能的按钮
  6. 错误处理
    • 自动清理无效的高亮记录
    • 处理各种边界情况
    • 提供详细的日志输出

dawnkylin/edge-ext-text-highlighter: A web extension for highlighting text

使用 Trae 辅助开发一个网页文本高亮插件的更多相关文章

  1. 10款jQuery文本高亮插件

    [编者按]本文作者为 Julian Motz,主要介绍十款 jQuery 文本高亮插件的现状.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 很多应用或网站都为用户提供搜索关键词的方法.为了 ...

  2. 开发一个简单的chrome插件-解析本地markdown文件

    准备软件环境 1. 软件环境 首先,需要使用到的软件和工具环境如下: 一个最新的chrome浏览器 编辑器vscode 2. 使用的js库 代码高亮库:prismjs https://prismjs. ...

  3. 一个C#语法高亮插件

    语法高亮对程序员阅读代码来说有着不小的帮助,虽然VisualStudio本身支持C#语法高亮,但也只是对关键字.类名.字符串等少数元素加了标记,而我们代码中主题:变量.函数.属性.事件等都没有进行高亮 ...

  4. 开发一个简单的babel插件

    前言 对于前端开发而言,babel肯定是再熟悉不过了,工作中肯定会用到.除了用作转换es6和jsx的工具之外,个人感觉babel基于抽象语法树的插件机制,给我们提供了更多的可能.关于babel相关概念 ...

  5. bootstrap开发一个简单网页。

    CSS代码: body{        padding-top: 50px;        padding-bottom: 50px;        overflow: auto!important; ...

  6. 在微信小程序中使用富文本转化插件wxParse

    在微信小程序中我们往往需要展示一些丰富的页面内容,包括图片.文本等,基本上要求能够解析常规的HTML最好,由于微信的视图标签和HTML标签不一样,但是也有相对应的关系,因此有人把HTML转换做成了一个 ...

  7. 从零开始, 开发一个 Web Office 套件 (1): 富文本编辑器

    这是一个系列博客, 最终目的是要做一个基于HTML Canvas 的, 类似于微软 Office 的 Web Office 套件, 包括: 文档, 表格, 幻灯片... 等等. 富文本编辑器 万里长征 ...

  8. 从零开始, 开发一个 Web Office 套件 (2): 富文本编辑器

    书接前文: 从零开始, 开发一个 Web Office 套件 (1): 富文本编辑器 这是一个系列博客, 最终目的是要做一个基于HTML Canvas 的, 类似于微软 Office 的 Web Of ...

  9. [转]让你的网页文本框增加光晕效果与提示,水印(类似QQ2011)

    本文转自:http://www.cnblogs.com/xiaofengfeng/archive/2013/01/28/2880344.html 让你的网页文本框增加光晕效果(类似QQ2011) 我们 ...

  10. 【转载国外好文】代工开发一个iOS应用没有那么容易

    导读:这是来自新加坡的 iOS 开发者 Kent Nguyen 发表在1月底的一篇博文.这篇吐槽文在 iOS 开发圈子里流传甚广,从原文150多个评论就可见一斑,现翻译如下. 让我们开门见山吧:做一个 ...

随机推荐

  1. 【Java】【Spring Boot】CP01:创建一个SpringBoot项目(Spring Initializr)

    设置(可跳过这一步) 点击Apply 然后点击OK 创建项目 目前不需要勾选什么,以后根据需要勾选 创建一个名为controller的文件夹(控制层),并在文件夹中创建一个HelloControlle ...

  2. Qt通用方法及类库2

    函数名 //初始化数据库 static void initDb(const QString &dbName); //初始化文件,不存在则拷贝 static void initFile(cons ...

  3. 贝叶斯定律和卡尔曼滤波中,关于(e^-x)*(e^-x)的积分的计算方法

    贝叶斯定律和卡尔曼滤波中,关于(e^-x)*(e^-x)的积分的计算方法: 1.用数学软件Mathmatica计算: 2.用复变函数中的留数定理计算: 3.用FFT+卷积公式计算.

  4. 特殊数据类型的深度分析:JSON、数组和 HSTORE 的实用价值

    title: 特殊数据类型的深度分析:JSON.数组和 HSTORE 的实用价值 date: 2025/1/4 updated: 2025/1/4 author: cmdragon excerpt: ...

  5. CH32V203F6P6-TSSOP20测试之02---点灯成功

    一.问题思考 直接用官方提供的例程,为何下载程序后没有什么响应,难道自己设计的电路有什么不妥? 于是,对于电路进行具体分析,结果发现: 第一.官方的BOOT0采用杜邦线连接,在芯片手册好像找不到关于B ...

  6. 如何快速在本地运行你vue打包的的dist文件

    要在本机启动运行前端提供的dist包,需要先安装一个HTTP服务器,例如Apache,Nginx,phpstudy.这里以使用Node.js的http-server为例进行说明 首先,确保已经安装了N ...

  7. 一文搞懂企业架构与DDD融合

    大家好,我是汤师爷~ 今天聊聊企业架构与DDD如何进行融合. 企业架构TOGAF 什么是企业架构TOGAF? TOGAF(The Open Group Architecture Framework)是 ...

  8. 什么是 SNI?

    参考: 链接1   链接2 介绍 是什么:SNI(Server Name Indication)是 TLS 的扩展,这允许在握手过程开始时通过客户端告诉它正在连接的服务器的主机名称. 作用:用来解决一 ...

  9. 四.1 Redis 五大数据类型/结构的详细说明/详细使用(List 列表数据类型详解和使用)

    四.1 Redis 五大数据类型/结构的详细说明/详细使用(List 列表数据类型详解和使用) @ 目录 四.1 Redis 五大数据类型/结构的详细说明/详细使用(List 列表数据类型详解和使用) ...

  10. DeepSeek本地安装部署(指南)

    前言 这两天deepseek出圈了. 今天分享一下,如果在本地电脑部署和运行deepseek,实现AI对话的功能. 访问ollama官网: https://ollama.com/ 下载一个合适自己操作 ...