HTML中的全文搜索,忽略标签/&

我最近看到了很多用于在HTML页面中搜索和突出显示术语的库。但是,我看到的每个库都存在相同的问题,它们找不到部分用html标记封装的文本,并且/或者找不到包含&表示的特殊字符。


示例a:

<span> This is a test. This is a <b>test</b> too</span>

搜索“测试”将找到第一个实例,但找不到第二个实例。


示例b:

<span> Pencils in spanish are called l&aacute;pices</span>

搜索“lápices”或“ lapices”将不会产生结果。


有没有这样做的JS库,或者至少是一种避免这些障碍的方法?

提前致谢!

回答:

您可以window.find()在非IE浏览器中使用,也可以在IE中使用TextRangefindText()方法。这是一个例子:

不幸的是,在版本15中切换到Blink渲染引擎之前的Opera不支持window.findTextRange。如果您对此感到担忧,那么一个更重量级的选择是结合使用我的Rangy库的TextRange和CSS类应用程序模块

码:

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);

}

}

}

以上是 HTML中的全文搜索,忽略标签/& 的全部内容, 来源链接: utcz.com/qa/408304.html

回到顶部