html中的突出显示,突出显示HTML文档中的术语表术语

本文介绍了如何使用客户端JavaScript实现文本高亮显示,通过将任务拆分成小块并异步处理,以节省服务器资源,保持HTML简洁。方法包括正则表达式匹配、文本节点收集和逐个处理。适合对HTML格式和性能敏感的场景。
摘要由CSDN通过智能技术生成

我认为使用客户端javascript突出显示是最佳选择。它可以节省您的服务器处理时间和带宽,更重要的是,保持html清洁和可用于那些不需要不必要标记的人,例如,打印或转换为其他格式时。

为了避免超时,只需将作业拆分为块并在setTimeout的线程函数中逐个处理它们。这是这种方法的一个例子

function hilite(terms, chunkSize) {

// prepare stuff

var terms = new RegExp("\\b(" + terms.join("|") + ")\\b", "gi");

// collect all text nodes in the document

var textNodes = [];

$("body").find("*").contents().each(function() {

if (this.nodeType == 3)

textNodes.push(this)

});

// process N text nodes at a time, surround terms with text "markers"

function step() {

for (var i = 0; i < chunkSize; i++) {

if (!textNodes.length)

return done();

var node = textNodes.shift();

node.nodeValue = node.nodeValue.replace(terms, "\x1e$&\x1f");

}

setTimeout(step, 100);

}

// when done, replace "markers" with html

function done() {

$("body").html($("body").html().

replace(/\x1e/g, "").

replace(/\x1f/g, "")

);

}

// let's go

step()

}

像这样使用:

$(function() {

hilite(["highlight", "these", "words"], 100)

})

如果您有疑问,请告诉我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值