Javascript实现html块语法高亮(搜索后关键字高亮)

来源:互联网 发布:淘宝上pc端是什么意思 编辑:程序博客网 时间:2024/06/07 06:36

dp.SyntaxHighlighter

dp.SyntaxHighlighter,这东西yahoo都在用它,支持多种语言。

只需要将代码放到<textarea>标签内,它就可以自动根据class指定的语言来对textarea内容进行着色,还提供了行号、打印等功能。如:
Xml代码
<TEXTAREA class=java name=code><br/>    // code here ...<br/></TEXTAREA><BR>

Java代码 <br/>    // code here ...<br/> <br/>    // code here ...<br/>可以说是我目前所见最强大的一款js实现的语法高亮产品了。

不过存在个问题,在blogger.com编辑框里面无法使用<textarea>标签,所以我后来又写了段js代码,用来将<pre>转换成<textarea>。当然,绝大多数情况下,这点不成为问题。

Javascript code prettifier

这个东东是今天才在网上发现的,googlecode出品。它支持的语言也不少,功能也不错(当然,相比dp来说,还是弱了不少的),不过没有行号功能挺遗憾的。另外就是它用的是<pre>和<code>标签,看了下它的sample,里面是用id来区分代码语言的,这个貌似不是很好吧。

如:
Xml代码
<BR><CODE class=prettyprint id=javascript><BR>// code here...<BR></CODE><BR>

// code here...

Chili

以jQuery插件模式实现的代码高亮,实现方式及效果都要好于prettyprint,当然,与dp相比还是有着不小的差距,谁叫丫是最强呢。地址看这儿。

示例:Xml代码
<DIV class=ie_copy title="copy this snippet to the clipboard"><BR> copy all<BR></DIV><BR><PRE><BR> <CODE class=javascript><BR>       alert( "Hello World!" );<BR> </CODE><BR></PRE>

============================pplive.com上实现的搜索后关键字高亮================

比如搜索关键字“蓝光”

<script type="text/javascript">
        initSearchTextHighlight('jwsearchtxt', 16, ["蓝","光"]);

        function initSearchTextHighlight(id, count, sss) {
            var searchTxt = function(str) {
                for (var i = 0, len = sss.length; i < len; i++) {
                    try {
                        str = str.replace(new RegExp('(' + sss[i] + ')', 'gi'), '<code>$1</code>');
                    } catch (e) { }
                }
                return str;
            };

            for (var i = 0, len = count; i < len; i++) {
                var els = document.getElementById(id + '_' + i).getElementsByTagName('a');
                for (var j = 0, count = els.length; j < count; j++) {
                    if (els[j].getAttribute('jsvalue') == 'hightlight') {
                        els[j].innerHTML = searchTxt(els[j].innerHTML);
                    }
                }
            }
        }
     </script>

原创粉丝点击