我最近看到了很多用于在HTML页面中搜索和突出显示术语的库。但是,我看到的每个库都存在相同的问题,它们找不到部分用html标记封装的文本,并且/或者找不到包含&表示的特殊字符。
示例a:
<span> This is a test. This is a <b>test</b> too</span>
搜索“测试”将找到第一个实例,但找不到第二个实例。
示例b:
<span> Pencils in spanish are called lápices</span>
搜索“lápices”或“ lapices”将不会产生结果。
有没有这样做的JS库,或者至少是一种避免这些障碍的方法?
提前致谢!
您可以window.find()在非IE浏览器中使用,也可以在IE中使用TextRange的findText()方法。这是一个例子:
window.find()
TextRange
findText()
不幸的是,在版本15中切换到Blink渲染引擎之前的Opera不支持window.find或TextRange。如果您对此感到担忧,那么一个更重量级的选择是结合使用我的Rangy库的TextRange和CSS类应用程序模块
window.find
码:
function doSearch(text) { if (window.find && window.getSelection) { document.designMode = "on"; var sel = window.getSelection(); sel.collapse(document.body, 0); while (window.find(text)) { document.execCommand("HiliteColor", false, "yellow"); sel.collapseToEnd(); } document.designMode = "off"; } else if (document.body.createTextRange) { var textRange = document.body.createTextRange(); while (textRange.findText(text)) { textRange.execCommand("BackColor", false, "yellow"); textRange.collapse(false); } } }