caixw.com

把时髦的技术挂在嘴边,还不如把过时的技术记在心里!

让Google-code-prettify显示行号

caixw

Google-code-prettify是一个轻量级的代码高亮插件,扩展性也很好。唯一的缺点是显示行号很麻烦。下面这一小段JS代码可以让你的代码显示行号。为了简便,直接使用了JQuery库,用惯了JQuery,原始的JS代码都不会写了:(。

/* prettyprint 行号支持。 */
if(!$.browser.msie)
    var pre = $('.prettyprint');
    pre.each(function(){
        var code = $(this).html().replace(/<br\s*\/*>/ig, '</li><li>');
        code = '<p>代码段</p><ol><li>'+code+'</li></ol>';
        $(this).html(code);
    });
    pre.find('p').click(function(){$(this).next().slideToggle('fast');});
}

原理很简单,在代码层外面套上ul标签,然后将所有的br标签换成</li><li>标签就行了。在Opera、Gecko或是Webkit中都能正常显示。但是IE下不行,所以要把它过滤掉,按照原来的方式显示。

再用下面这段CSS美化一下,效果就更好看了。

.prettyprint{
    background:#eff5f9;
    border:1px solid #bbdae5 !important;
    padding:0px !important;
    overflow:auto;
    word-wrap:break-word;
}
.prettyprint>p{
    padding:2px 10px;
    margin:0px;
    background:#bbdae5;
    cursor:pointer
}
.prettyprint ol{
    padding:0px 5px;
    margin:0px;
    border-left:30px solid rgb(200,200,200);
    list-style-type:decimal-leading-zero;
}
.prettyprint ol li{
    padding:0px;
    margin:0px;
}
.prettyprint ol li:nth-of-type(even){background:#f6fefc;}

把上面这两段代码分别放在调用google-code-prettify代码之后调用,就可以了。

评论(4)

  • Nginx

    Nginx  | #0

    怎么说呢。呵呵,其实在IE下面是可以的 把 prettyPrint();放在你这个代码后面,就OK了。。呵呵 //if(-[1,]) { var pre = $('.prettyprint'); pre.each(function(){ var code = $(this).html().replace(/\/gi, ""); //alert($(this).html()); code = ''+code+''; $(this).html(code); }); //} prettyPrint();

    回复

  • Karson

    Karson  | #1

    我的博客也用上了Prettyprint这个插件,高亮代码很不错。

    回复

  • LOO2K

    LOO2K  | #2

    err... 应该是 标签无序列表吧;

    回复

  • dengmin

    dengmin  | #3

    prettify做的很不错. 很小巧 我喜欢

    回复

添加评论

验证码

还没有漂亮的个人头像吧?

Gravatar申请一个吧!

没有中文输入法吗?试试这个!

  accesskey="enter"