mark.js
很多时候我们的网页中可能需要做全文搜索的功能,自己写也是可以的,但是你不得不要熟悉正则,还要考虑性能、效果......
不如我们节省下这个精力和脑力,来试试这款功能强大,性能优异的插件mark.js
简介:
mark.js是一款js的文本高亮插件。它可以用来动态地标记搜索词或自定义正则表达式,并为您提供一些内置选项,如:动态支持、独立的单词搜索、自定义同义词、iframe支持、自定义过滤器、精度定义、自定义元素、自定义类名等等。
使用方法:
直接引入页面就可以了,作者还贴心的准备了jsES5和jsES6版本,当然也有jquery版本。
我们来看下几个简单的用法,原生js方法大同小异。
mark()
高亮自定义搜索词
$(".context").mark(keyword , [options]);
示例:$(".context").mark("test"); // 标记 "test"关键字, "context"类必须存在
参数:
keyword
类型: string或者array或者string
这个关键字将被标记. 你也可以传一个多个关键字的数组. 注意关键字将被转义. 如果你不希望关键字转义可以使用 markRegExp() 方法.
options
类型:object
因为篇幅有限,我这里介绍几个关键配置参数
- element:包裹关键字的元素,默认为mark元素
- className:包裹元素上的className,默认为空
- exclude:忽略元素,数组类型。数组可为元素,类名,id名,数组内的元素将被忽略标记。
- separateWordSearch:是否以空格分割查询词,默认true。可查询多个关键字
markRegExp()
更强大的查找方法,可以根据自己定义的正则表达式来匹配内容。这个方法还可以实现更多,更强大的功能。
$(".context").markRegExp(regexp ,[options]);
参数和mark()方法基本相同。
示例:$(".context").markRegExp(/lorem/gmi);
markRanges()
一个包含开始位置和长度属性的数组对象。注意:开始位置必须指定,包含空格。
$(".context").markRanges(ranges [, options]);
示例:$(".context").markRanges([{ start: 15, length: 5}, { start: 25: length: 8}]); // 在 15-20 和 25-33范围内标记
unmark()
移除由 mark.js.标记的元素,恢复为未标记状态。如果你想每次搜索,去除上次标记结果,记得每次搜索前调用。
兼容性:
mark.js可以正常在所有现代浏览器上运行
他被广泛测试在:
- Firefox (30+)
- Chrome (30+)
- Opera (12+)
- Safari (5+)
- Edge (13+)
- IE (9+)
详细内容可以在官网查看api
官网网址 https://markjs.io/