自动加载语法高亮工具-dp.SyntaxHighlighter

作者: jaclon 分类: JS 发布时间: 2011-01-07 08:50 ė 6没有评论

dp.SyntaxHighlighter是一个用于对各种程序源代码语法进行加亮显法的JavaScript工具。支持当前流行的各种编程语言包括:C#,C++,Delphi,Java,JavaScript,PHP,Python,Ruby,SQL,VisualBasic,XML/HTML

下载地址:http://code.google.com/p/syntaxhighlighter/downloads/list

本文主要讲解如何根据需要自动加载文件,原理很简单:
1.查找code标签,
2.列出code标签中用的的语言包
3.加载css,js文件
4.执行(dp.SyntaxHighlighter)格式化

下面给我在本博客中用的代码,你可能要根据你的实际情况作一些修改

Array.prototype.uniq = function() {   
 var temp = {}, len = this.length; 
 
 for(var i=0; i < len; i++)  {   
 if(typeof temp[this[i]] == "undefined") { 
 temp[this[i]] = 1; 
 }   
 }   
 this.length = 0; 
 len = 0; 
 for(var i in temp) {   
 this[len++] = i; 
 }   
 return this;   
}  
var dp = false; 
var langs = new Array('c++', 'c#', 'css', 'delphi', 'java', 'js', 'php',
 'python', 'ruby', 'sql', 'vb', 'xml'); 
var langfiles = new Array(''); 
var currentlangs = new Array(); 
var syntaxhighlighterdir = "/wp-content/plugins/dp.SyntaxHighlighter/";//插件所在位置 
var elements = document.getElementsByTagName("pre"); //pre为存放代码的标签 
for(var i=0; i < elements.length; i++){ 
 for(var j=0; j< langs.length; j++){ 
 if(elements[i].className.indexOf(langs[j]) != -1){ 
 currentlangs[currentlangs.length] = langs[j]; 
 break; 
 } 
 } 
} 
if (currentlangs.length > 0) 
{ 
 currentlangs = currentlangs.uniq();//去除重复的语言 
 loadfile('css','SyntaxHighlighter.css');//加载css文件     
 loadfile('js', 'shCore.js');//加载主文件 
 for(var i=0;i<currentlangs.length;i++){ 
 var type = currentlangs[i] 
 switch(type) { 
 case 'c++': 
 type = 'Cpp'; 
 break; 
 case 'c#': 
 type = 'CSharp'; 
 break; 
 case 'js': 
 type = 'JScript'; 
 break; 
 default : 
 type = type.substr(0,1).toUpperCase() + type.substr(1); 
 } 
 var filename = 'shBrush'+type+'.js' 
 loadfile('js',filename);//加载语言文件 
 }     
 dpstart();//判断是否加载完并执行 
 
} 
 
function dpstart() 
{ 
 if (typeof dp == 'boolean') 
 { 
 window.setTimeout("dpstart()", 500); 
 
 } else { 
 dp.SyntaxHighlighter.ClipboardSwf = '/wp-content/plugins/dp.SyntaxHighlighter/Scripts/clipboard.swf'; 
 dp.SyntaxHighlighter.HighlightAll('code');//执行语法高亮 
 } 
} 
 
 
function loadfile(type, filename){ 
 var oHead = document.getElementsByTagName('HEAD').item(0);     
 if(type == 'js'){ 
 var item = document.createElement("script"); 
 item.type = "text/javascript"; 
 item.src = syntaxhighlighterdir + 'Scripts/' + filename; 
 }else{ 
 var item = document.createElement('link'); 
 item.href = syntaxhighlighterdir + 'Styles/' + filename; 
 item.rel = 'stylesheet'; 
 item.type = 'text/css'; 
 }  
 oHead.appendChild(item);  
}

本文出自 肥蕉博客@IT技术,热门话题,生活随笔,美图欣赏,转载时请注明出处及相应链接。

本文永久链接: http://www.bananawolf.com/html/2011/01/286.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

Ɣ回顶部