我正在做一个小项目,需要我在网络浏览器中突出显示。javascript 或 java 中是否有任何库可以在 Web 浏览器中突出显示?我想突出显示给定文本的某个单词或一大块单词。
我知道有一些类似的问题涉及C#,但我只知道javascript和java。如果可能,请使方法尽可能简单。
我正在做一个小项目,需要我在网络浏览器中突出显示。javascript 或 java 中是否有任何库可以在 Web 浏览器中突出显示?我想突出显示给定文本的某个单词或一大块单词。
我知道有一些类似的问题涉及C#,但我只知道javascript和java。如果可能,请使方法尽可能简单。
这个问题以前有人问过。
它应该为您解答:如何使用 javascript 突出显示文本
也许这个jsFiddle的代码很有用。荧光笔功能:
function highLight(term,root,forElements,styleclass){
root = root || document.querySelector('body');
term = term instanceof Array ? term.join('|') : term;
if (!term) {
throw TypeError('Highlighter needs a term to highlight anything');
}
forElements = forElements && forElements instanceof Array
? forElements.join(',')
: /string/i.test(typeof forElements) ? forElements : '*';
styleclass = styleclass || 'highlight';
var allDiv = root.querySelectorAll(forElements),
re = RegExp(term,'gi'),
highlighter = function(a){
return '<span class="'+styleclass+'">'+a+'</span>'
};
for (var i=0; i<allDiv.length; i+=1){
// recurse children
if (allDiv[i].querySelectorAll(forElements).length){
highLight.call(null,term, allDiv[i],forElements,styleclass);
}
// replace term(s) in text nodes
var node = allDiv[i];
for (node=node.firstChild; node; node=node.nextSibling) {
if (node.nodeType===3){
var re = RegExp(term,'gi');
node.data = node.data.replace(re,highlighter);
}
}
}
//finally, replace all text data html encoded brackets
root.innerHTML = root.innerHTML
.replace(/</gi,'<')
.replace(/>/gi,'>');
}