Package Exports
- js-mark
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (js-mark) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
js-mark
🖍️️
✨ 它提供了一组可交互操作的工具来注释网页内容 ✨🖍️
js-mark是一个JavaScript库,用于在浏览器。他是一个可以在任何网页做标记的前端库, 它提供了一组可交互操作的工具来注释网页内容。 支持标记文本和 持久化存储与还原
Demo
如果进行简单的演示,可以打开https://bigcoal.github.io/
运行方可查看演示效果
安装
方法一
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
}
}
配置说明:
参数名 | 类型 | 描述 | 是否必须 | 默认值 |
---|---|---|---|---|
el | Document | 标记的根节点元素 | 是 | null |
options | Object | 配置项(详细如下) | 否 | null |
options
配置说明:
参数名 | 类型 | 描述 | 是否必须 | 默认值 |
---|---|---|---|---|
isCover | Boolean | 标记内容是否可以覆盖 | 否 | true |
实例方法
1.鼠标选中文本后的回调方法:jsMark.onSelected
当鼠标选中根节点下的文本
或从后台获取数据使用jsMark.renderStore渲染已标注节点时
会触发此方法,该方法回调返回一个Selected已选中对象
interface Selected {
nodes: 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{
c: 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();
兼容性
IE | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|
10+ | 52+ | 15+ | 5.1+ | 15+ |