本文提供一段JavaScript代码,用于在网页中自动查找并高亮显示指定的关键字。代码通过判断浏览器是否支持Range对象,分别采用不同策略进行文本查找与样式替换,支持自定义关键词、链接及颜色值。
JavaScript实现网页关键字高亮显示代码
以下是用于实现网页关键字高亮功能的JavaScript代码片段。
定义一个名为keys的数组,用于存储待高亮的关键词配置。
数组元素为包含关键词、目标链接及高亮颜色的子数组,例如关键词“脚本”对应链接https://www.jb51.net及红色#ff0000。
配置关键词“小说”,对应链接http://www.kanshule.com及绿色#00ff00。
配置关键词“念经”,对应链接http://www.baidu.com及蓝色#0000ff。
配置关键词“工会”,对应链接http://www.baidu.com及橙色#cc6600。
]
声明变量bookmark用于保存文本范围书签,以便在IE等旧浏览器中重置查找位置。
检测文档是否支持createRange方法,以区分现代浏览器与旧版IE。
若支持,则通过document.createRange()创建Range对象range。
若不支持createRange,则进入兼容旧版IE的处理分支。
使用document.body.createTextRange()创建文本范围对象range。
调用range.getBookmark()获取当前文本范围的书签,保存至bookmark变量。
}
声明变量key用于遍历keys数组中的每个配置项。
for(var i = 0;key = keys[i];i++){
判断range对象是否具备findText方法,这是IE特有的文本查找方法。
调用range.collapse(true)将范围折叠至起始位置,确保从开头开始查找。
调用range.moveToBookmark(bookmark)将范围重置至之前保存的书签位置。
使用while循环配合range.findText(key[0])持续查找关键词,只要找到即执行后续操作。
调用range.pasteHTML(range.text.fontcolor(key[2]))将找到的文本替换为带有指定颜色样式的HTML片段。
}
若range对象不支持findText,则进入基于Selection对象的兼容处理逻辑。
声明变量s和n,分别用于存储选区对象和新创建的DOM元素。
通过window.getSelection()获取当前窗口选区对象s。
调用s.collapse(document.body,0)将选区折叠至文档body的起始位置。
使用while循环配合window.find(key[0])持续查找关键词,只要找到即执行后续操作。
创建一个新的SPAN元素n,用于包裹高亮文本。
设置n.style.color为key[2]指定的颜色值,实现文字颜色高亮。
调用s.getRangeAt(0).surroundContents(n)将当前选中的内容包裹在span元素n中,完成高亮显示。
}
}
}