js-mark新时代的网页标记容器

news2024/11/25 2:50:52

js-mark  🖍️️

✨ 它提供了一组可交互操作的工具来注释网页内容 ✨🖍️

js-mark是一个JavaScript库,用于在浏览器。他是一个可以在任何网页做标记的前端库, 它提供了一组可交互操作的工具来注释网页内容。 支持标记文本和 持久化存储与还原

在这里插入图片描述

Demo

如果进行简单的演示,可以打开http://webviews.cn/js-mark/运行方可查看演示效果

安装

方法一

npm install js-mark

方法二

使用静态文件,把dist/js-mark.js静态文件直接放到项目中

文档

基本配置

 import JsMark from "js-mark";
 const jsMark = new jsMark(opts:OPTS)

创建一个新的jsMark实例,opts 会合并至默认配置 (如下所示).

interface OPTS {
    el:Element,
    options:{
        isCover:boolean
    }
}

配置说明:

参数名类型描述是否必须默认值
elDocument标记的根节点元素null
optionsObject配置项(详细如下)null

options配置说明:

参数名类型描述是否必须默认值
isCoverBoolean标记内容是否可以覆盖true

实例方法

1.鼠标选中文本后的回调方法:jsMark.onSelected

鼠标选中根节点下的文本从后台获取数据使用jsMark.renderStore渲染已标注节点时会触发此方法,该方法回调返回一个Selected已选中对象


interface Selected {
    textNodes: Text[]; //选中的所有文本节点
    text: string;   //选中的文本
    offset: number; //选中文本相对于根结点的偏移量
    hasStoreRender: boolean; //是否来自renderStore方法渲染,一般用于从数据库拿到数据运用jsMark.renderStore方法判断首次渲染
}

jsMark.onSelected = function (res:Selected) {};

2.标注选中文本:jsMark.repaintRange(nodes:Text[],uid:string,cssClass:string)

标注已经选中的文本,一般用在jsMark.onSelected回调方法内,接受三个参数


//定义
interface RangeNodes{
    textNodes: Text[]; //选中的所有文本节点,onSelected返回值的res.textNodes
    className: string; //需要标注的文本节点样式类
    uuid?: string; //标注文本节点的唯一id,会绑定到节点身上的data-selector属性,此id可用于清除当前标注节点,可选,不传会自动生成
    storeRenderOther?:any; //来自jsMark.renderStore方法的用户自定义参数
}

function repaintRange(opts:RangeNodes):void{...}

//调用示例
jsMark.onSelected = function (res) {
    jsMark.repaintRange({
        textNodes:res.textNodes
    });
};

3.点击已经标注文本后的回调方法:jsMark.onClick

点击已经标注的内容后,会触发jsMark.onClick方法,回掉方法接受一个uid为标签上唯一的一个id,可用于清除单个标注


jsMark.onClick = function (uid:string) {};

4.通过数据去标注根节点下的数据:jsMark.renderStore()

//定义
interface SelectInfo{
    offset: number;  //选中文本相对于根结点的偏移量
    text: string;   //选中的文本
    storeRenderOther?:any; //用户自定义参数
}

function renderStore(obj: SelectInfo[]): void {...}

//调用
jsMark.renderStore([{text:"测试",offset:20}])

5.查找跟节点下的单个词组:jsMark.findWord

通过jsMark.findWord查找文档中所有的可标注文本位置,返回相对于跟节点的偏移量

//定义
declare type Nullable<T> = T | null;

interface Selected {
    offset: number;  //偏移量
    text: string;   //文本信息
}

function findWord(word:string):Nullable<Selected[]>{...}

//调用
jsMark.findWord("标注文本");

6.清除单个标注:jsMark.clearMark

清除标签上data-selector属性为唯一uid的标签标注

jsMark.clearMark(uid);
7.清除所有标注:jsMark.clearMarkAll
jsMark.clearMarkAll();
8.清除事件:jsMark.destroyEvent
jsMark.destroyEvent();

兼容性

IEFirefoxChromeSafariOpera
10+52+15+5.1+15+

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/58138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LSTM和双向LSTM讲解及实践

目录&#xff1a; RNN的长期依赖问题LSTM原理讲解双向LSTM原理讲解keras实现LSTM和双向LSTM RNN 的长期依赖问题 在上篇文章中介绍的循环神经网络RNN在训练的过程中会有长期依赖的问题&#xff0c;这是由于RNN模型在训练时会遇到梯度消失(大部分情况)或者梯度爆炸(很少&…

网络1323的分类行为

( A, B )---2*30*2---( 1, 0 )( 0, 1 ) 用网络分类A和B&#xff0c;让A是&#xff08;0&#xff0c;1&#xff09;&#xff08;1&#xff0c;1&#xff09;&#xff0c;让B是&#xff08;1&#xff0c;0&#xff09;&#xff08;1&#xff0c;1&#xff09;。测试集为&#xf…

[附源码]计算机毕业设计springboot学生在线考试系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

408 考研《操作系统》第一章第三节:中断和异常、系统调用

文章目录教程1.中断和异常1.1 中断的作用1.2 中断的类型1.2.1 外中断的处理过程1.2.1 内中断的处理过程1.3 中断机制的基本原理1.4 总结2. 系统调用2.1 什么是系统调用&#xff1f;2.2 小例子&#xff1a;为什么系统调用是必须的&#xff1f;2.3 什么功能要用系统调用实现&…

m基于随机接入代价的异构网络速率分配算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 无线接入技术发展迅速&#xff0c;异构网络并存的现象普遍存在&#xff1b;同时&#xff0c;随着终端用户数量的剧增、业务类型的多样化和高服务质量多媒体数据业务需求的增加&#xff0c;通过异…

磨金石教育插画技能干货分享|插画怎么配色才好看?

在绘画界&#xff0c;配色是非常重要的步骤&#xff0c;一幅作品能够展现出什么样的品质&#xff0c;配色起着举足轻重的作用。颜色配的好会给作品晋商添花&#xff0c;配的不好&#xff0c;就会让作品失去水准&#xff0c;缺少神韵。 所以想学好插画&#xff0c;就要在在配色上…

python离线环境下安装第三方模块的方法

一.背景 1.背景&#xff1a; 在实际开发中&#xff0c;我们自己电脑上方便上网可以随时安装自己需要的包文件&#xff0c;但是有的项目现场不能联网或者现场是“内网”不具备联网条件&#xff0c;所以必须解决在“离线电脑上”安装需要的软件包的问题。 2.环境说明以及实现步…

SpringCloud微服务项目实战 - 项目搭建

面对大河我无限惭愧 我年华虚度空有一身疲倦 系列文章目录 项目搭建app登录 一、项目介绍 1. 项目背景 项目概述&#xff1a; 类似于新闻头条&#xff0c;是一个新闻资讯类项目 &#xff08;这里之后放项目APP端的截图&#xff09; 技术架构&#xff1a; 项目术语&…

Ubuntu18.04安装ROS、Gazebo、Mavros、PX4、QGC教程

修改国内源 修改apt sudo cp /etc/apt/source.list /etc/apt/source.list.old sudo gedit /etc/apt/source.list输入如下进行保存 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic m…

转行|什么是游戏建模??小本本记下来

今天来说一下游戏建模…小本本记下来 &#x1f440;3D手绘建模 3D美术设计师根据原画设计师的构思&#xff0c;将二维的东西在3D软件里面制作出来&#xff0c;最终得到的东西是模型( 3Dmax )和贴图&#xff08;软件PS、Bodypaint ) &#xff0c;模型是物体的主要构架&#xff…

Kaggle Feedback Prize 3比赛总结:两种模型设计思路

比赛的目标&#xff1a;本次竞赛的目标是评估8-12年级英语学习者&#xff08;ELLs&#xff09;的语言能力。利用英语学习者所写的论文数据集开发出能更好地支持所有学生的能力模型&#xff0c;帮助ELL学生在语言发展方面得到更准确的反馈&#xff0c;并加快教师的评分周期。 方…

RestTemplate使用InputStreamResource上传文件

背景 1. 我们应用服务是Spring boot项目&#xff0c;预览服务是我们另一个团队提供的用.net写的&#xff0c;最终使用的是office online来实现文件预览的功能。 2. 我们文件在阿里云OSS存储&#xff0c;我们需要预览文件需要将文件上传至预览服务器。 3. 计划使用RestTemplate…

线程池自查注意点

文章目录线程池自查注意点1、线程池的标准创建方式2、线程池的任务调度流程3、避免使用Executors快捷创建线程池3.1、newSingleThreadExecutor()3.2、newCachedThreadPool()3.3、ScheduledThreadPool()4、避免在方法中创建线程池5、不要盲目使用同步队列6、使用线程池&#xff…

MySQL库的操作

文章目录MySQL库的操作创建数据库创建数据库案例字符集和校验规则查看系统默认字符集以及校验规则查看数据库支持的字符集查看数据库支持的字符集校验规则校验规则对数据库的影响操纵数据库查看数据库显示创建语句修改数据库删除数据库备份和恢复数据库的备份和恢复表的备份和恢…

Cracking the Safes之Linux系统下gdb调试

Cracking Safe是什么 挑战是找出四个保险箱中每个保险箱预期的正确的5个输入集。在运行二进制安全程序时,您需要一次输入一个猜测,如下所示: 其实,就是输入5次,程序会对输入内容进行判断,只有符合程序要求才能成功,任务就是逆向找到正确的字符串!!! 解题思路 反汇…

mac pro M1(ARM)安装:centos8.0虚拟机

0.引言 mac发布了m1芯片&#xff0c;其强悍的性能收到很多开发者的追捧&#xff0c;但是也因为其架构的更换&#xff0c;导致很多软件或环境的安装成了问题&#xff0c;之前我们讲解了如何安装centos7。这次我们接着来看如何在mac m1环境下安装centos8 1.下载 1.1 安装VMwar…

Java基于springboot+vue的五金用品销售购物商城系统 前后端分离

五金用品是当前很多家庭和维修人员必备的工具&#xff0c;他们可以让维修变的更加简单&#xff0c;甚至有很多维修必须有配套的专业工具才能够完成&#xff0c;但是很多时候人们在五金店购买这些五金用品的时候不是价格昂贵就是缺少一些想要的工具&#xff0c;这个是通过开发一…

Guava 对 Map的操作

Guava是google公司开发的一款Java类库扩展工具包&#xff0c;内含了丰富的API&#xff0c;涵盖了集合、缓存、并发、I/O等多个方面。使用这些API一方面可以简化我们代码&#xff0c;使代码更为优雅&#xff0c;另一方面它补充了很多jdk中没有的功能&#xff0c;能让我们开发中更…

C语言刷题(2)

&#x1f412;博客名&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;别人可以拷贝我的模式&#xff0c;但不能拷贝我不断往前的激情 文件拷贝 问题描述&#xff1a; 小蓝正在拷贝一份文件&#xff0c;他现在已经拷贝了 t 秒时间&#xff0c;已经拷贝了 c 字节&#…