0

我正在做一个小项目,需要我在网络浏览器中突出显示。javascript 或 java 中是否有任何库可以在 Web 浏览器中突出显示?我想突出显示给定文本的某个单词或一大块单词。

我知道有一些类似的问题涉及C#,但我只知道javascript和java。如果可能,请使方法尽可能简单。

4

2 回答 2

0

这个问题以前有人问过。

它应该为您解答:如何使用 javascript 突出显示文本

于 2013-08-12T04:33:20.160 回答
0

也许这个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(/&lt;/gi,'<')
                      .replace(/&gt;/gi,'>');
}
于 2013-08-12T04:56:22.797 回答