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

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+
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值