直接转为高亮版,IE+FF+Cr测试通过:
代码:
程序代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml ">
<หัว>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>เปรห์(อัล)</title>
<style type="text/css">
pre.preh {font-family:Consolas,"Lucida Console", monospace;}
pre.preh ol{border:1px solid #ddd;margin:0;padding:0 0 0 4em;สี:gray;}
pre.preh ol li {line-height:1.75em;border-bottom:1px solid #ddd;border-left:1px solid #ddd;}
pre.preh ol li span{สี:สีดำ;สีขาว-space:pre;}
pre.preh ol li span span.regexp {พื้นหลัง: สีเขียว; สี: ขาว}
pre.preh ol li span em{color:blue;font-style:normal;}
pre.preh ol li span var.object {สี: สีแดง}
pre.preh ol li span var.method_property{สี:ส้ม}
pre.preh ol li span.comments{color:#aaa}
pre.preh li var {สี: สีฟ้า; รูปแบบตัวอักษร: ปกติ;}
pre.preh li q{สี:เขียว;}
ถาม: ก่อน {เนื้อหา: ไม่มี; จอแสดงผล: ไม่มี;}
</สไตล์>
<!--[ถ้า IE]> <style>pre.preh{font-family:fixedsys,monospace}</style> <![endif]-->
<สคริปต์>
//คำหลัก
คำหลัก var = {js:{},html:{},css:{}};
keywords.js.keys = "บทคัดย่อตัวแบ่งไบต์กรณี catch char คลาส const ดำเนินการต่อค่าเริ่มต้นลบทำสองครั้งอื่นขยายเท็จสุดท้ายในที่สุดก็ลอยสำหรับฟังก์ชั่นข้ามไปหากดำเนินการนำเข้าในอินสแตนซ์ของอินเทอร์เฟซ int แพ็คเกจโมฆะดั้งเดิมแบบยาวการป้องกันส่วนตัวการรีเซ็ตสาธารณะส่งคืนสวิตช์ซุปเปอร์คงที่แบบสั้นที่ซิงโครไนซ์ การโยนนี้เป็นการลองจริงชั่วคราว var ถือเป็นโมฆะในขณะที่ด้วย";
keywords.js.objects="Anchor Applet อาร์กิวเมนต์พื้นที่ อาร์เรย์ ปุ่มบูลีน ช่องทำเครื่องหมาย คอลเลกชัน Crypto วันที่ พจนานุกรม เอกสาร ไดรฟ์ ไดรฟ์ องค์ประกอบ ตัวแจงนับ ไฟล์เหตุการณ์ FileObject FileSystemObject FileUpload โฟลเดอร์ โฟลเดอร์ แบบฟอร์ม เฟรม ฟังก์ชัน Global Hidden History HTMLElement Image อินฟินิตี้ อินพุต JavaArray JavaClass JavaObject JavaPackage JSObject เลเยอร์ ลิงก์ คณิตศาสตร์ MimeType หมายเลขนาวิเกเตอร์ วัตถุ ตัวเลือก แพ็คเกจ รหัสผ่าน ปลั๊กอิน PrivilegeManager หน้าจอ RegExp แบบสุ่ม เลือกสตริง ส่งข้อความ Textarea URL หน้าต่าง VBArray WScript";
keywords.js.properties = "เหนือ abs acos การกระทำ activeElement การแจ้งเตือน alinkColor ทั้งหมด altKey จุดยึดจุดยึด appCodeName แอปเพล็ตใช้ appName appVersion อาร์กิวเมนต์ arity asin กำหนด atan atan2 atob availHeight availLeft availTop availWidth ActiveXObject พื้นหลังด้านหลังด้านล่าง bgColor กะพริบตาใหญ่ เบลอ เส้นขอบตัวหนา borderWidths ด้านล่าง ปุ่ม btoa โทรผู้โทร ผู้โทร cancelBubble captureEvents ceil charAt charCodeAt ชุดอักขระที่ตรวจสอบคลาสลูกแล้ว className clear clearInterval clearTimeout คลิก clientInformation clientX clientY ปิดปิด colorDepth คอมไพล์ concat ยืนยัน Concatir มีคุกกี้ตามบริบท cos crypto ctrlKey ข้อมูลปัจจุบัน defaultCharset defaultChecked defaultSelected defaultStatus defaultValue คำอธิบาย ปิดการใช้งานExternalCapture ปิดการใช้งานโดเมนเอกสารสิทธิพิเศษ E Echo องค์ประกอบองค์ประกอบฝังเปิดใช้งานปลั๊กอิน EnableExternalCapture เปิดใช้งานสิทธิพิเศษการเข้ารหัสเหตุการณ์ eval exec exp ขยาย FromPoint fgColor ชื่อไฟล์ ค้นหาฟอนต์โฟกัสพื้นคงที่ ฟอนต์สีขนาดฟอร์มฟอร์ม ส่งต่อเฟรมจากCharCode จากองค์ประกอบ getAttribute รับ getClass getDate getDay getFullYear getHours getMember getMilliseconds getMinutes getMonth getSeconds getSelection getSlot getTime getTimezoneOffset getUTCDate getUTCDay getUTCFullYear getUTCHours UTCมิลลิวินาทีรับUTCMinutesรับUTCเดือนรับUTCSecondsรับหน้าต่างรับปี ไปทั่วโลก HandleEvent ความสูง แฮช ประวัติศาสตร์ที่ซ่อน โฮสต์บ้าน ชื่อโฮสต์ href hspace id ids ละเว้นภาพกรณี ดัชนี ดัชนีภายใน ภายในHTML ข้อความภายใน ภายในความกว้าง แทรก AdjacentHTML แทรก AdjacentText isFinite คือ NAN ตัวเอียง java javaEnabled เข้าร่วมรหัสรหัส ลิงค์ LN10 LN2 LOG10E LOG2E ภาษา lang ดัชนีครั้งสุดท้าย linkColor โหลดตำแหน่ง ตำแหน่งบันทึกของแถบ ต่ำsrc MAX_VALUE MIN_VALUE อัตรากำไรขั้นต้นตรงกับวิธีแถบเมนูสูงสุด mimeTypes ตัวดัดแปลงขั้นต่ำ moveAbove moveBelow moveBy moveTo moveToAbsolute multiline NaN NEGATIVE_INFINITY ชื่อนำทาง เนวิเกเตอร์ netscape หมายเลขถัดไป offsetBuffering offset offsetHeight offsetLeft offsetTop offsetWidth offsetX offsetY onabort onblur onchange onclick ond blclick ondragdrop onerror onfocus onHelp onkeydown onkeypress onkeyup onload onmousedown onmouseout onmouseout onmouseup onmouseup onmove onreset onresize onsubmit onunload opener options ด้านนอกความสูงด้านนอกHTML ข้อความด้านนอกกว้าง POSITIVE_INFINITY PI paddings หน้า X หน้า XOffset หน้า YOffset parent parentElement parentLayer parentLayer parentWindow parseFloat parseInt pathname แถบส่วนบุคคล pixelDepth แพลตฟอร์มปลั๊กอิน การตั้งค่า pow ป๊อปพิมพ์ก่อนหน้า ต้นแบบโปรโตคอลพร้อมท์พุช readyState แบบสุ่ม เหตุผล ผู้อ้างอิง รีเฟรช รีลีส กิจกรรม รีโหลด ลบแอตทริบิวต์ ลบสมาชิก แทนที่ ปรับขนาดโดยปรับขนาด เพื่อส่งคืนค่า ย้อนกลับขวา บริบทรอบ SQRT1_2 หน้าจอ SQRT2Y แถบเลื่อนเลื่อน เลื่อนโดยเลื่อนเข้าดู เลื่อนหากต้องการค้นหา เลือกที่เลือก ดัชนีตัวเอง ชุดแอตทริบิวต์ ชุดวัน ชุดเต็มปี ชุดปุ่มลัด ชุดชั่วโมง ชุดสมาชิก ชุดมิลลิวินาที ชุดนาที ชุดปรับขนาดได้ ชุดวินาที ชุดสล็อต ชุดเวลา ชุดหมดเวลาUTCDชุดวันที่UTCชุดเต็มปีUTCHชุดของเราUTCMillseconds setUTCMinutes setUTCMonth setUTCSeconds setYear setZOptions shift shiftKey พี่น้องด้านบนพี่น้องด้านล่าง เครื่องหมายข้อความ sin ชิ้น smallsort แหล่งที่มา ดัชนี ประกบกัน sqrt src srcElement srcFilter สถานะ แถบสถานะ หยุด รูปแบบการนัดหยุดงาน ย่อย ส่ง substr ส่วนต่อท้ายสตริงย่อย sup ระบบ sup ประเภทภาษา tagName แท็ก taint taintEnabled tan เป้าหมายการทดสอบ ข้อความ ชื่อ toElement toGMTString toLocaleString toLowerCase แถบเครื่องมือด้านบน ถึงUpperCase toUTCString ประเภทประเภท UTC unescape unshift untaint unwatch userAgent user ค่าภาษาของการมองเห็น vlinkColor vspace ดูหน้าต่างความกว้างที่เขียน writeln zIndex";
ฟังก์ชั่น htmlEncode(strS){
กลับ strS.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");
-
ฟังก์ชั่น htmlEncodef(c){
กลับ c=="&"?'&':(c=="<"?'<':(c=='>'?'>':c));
-
ฟังก์ชั่น htmlEncodefl(c){
กลับ c=="&"?5:(c=="<"||c=='>'?4:1);
-
ฟังก์ชั่น html2txt(strS){
กลับ strS.replace(/</g,"<").replace(/>/g,">").replace(/ /g," ").replace(/<br/?>/g," rn").replace(/&/g,"&").replace(/<.+?>/g,"");
-
วาร์เล็กเซอร์ = {}
เล็กเซอร์ js = {
regKW:regExp ใหม่("^("+keywords.js.keys.replace(/ /g,"|")+")$","g"),
regObj:new RegExp("^("+keywords.js.objects.replace(/ /g,"|")+")$","g"),
regMP:regExp ใหม่("^("+keywords.js.properties.replace(/ /g,"|")+")$","g"),
clKW:'<em>$1</em>',
clObj:'<var class="object">$1</var>',
clMP:'<var class="method_property">$1</var>',
ไฟแนนซ์: ฟังก์ชั่น {
var str=" ", c="",word='',lastState="", seq, intNextQuote, intTemp, intCount, intWordStart,glbStr=s,i;
glbStr=glbStr.replace(/r|n/g,'rn');
glbStr=glbStr.replace(/rnrn/g,'rn');
สำหรับ(i=0;i<glbStr.length;i++){
c=glbStr.charAt(i);
สวิตช์ (ค) {
กรณี """:
str+=htmlเข้ารหัส(c);
intNextQuote=i;
ในขณะที่(intNextQuote!=-1&&intNextQuote<glbStr.length){
intNextQuote=glbStr.indexOf(""",intNextQuote+1);
if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!=" \")break ;
intCount=0; intTemp=intNextQuote;
ในขณะที่(glbStr.charAt(--intTemp)==" \")intCount ++;
ถ้า(intCount%2==0)พัง;
-
ถ้า (intNextQuote==-1) พัง;
str+="<q>"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"</q>"";
i=intNextQuote;
สถานะสุดท้าย = "";
หยุดพัก;
กรณี "'":
str+=htmlเข้ารหัส(c);
intNextQuote=i;
ในขณะที่(intNextQuote!=-1&&intNextQuote<glbStr.length){
intNextQuote=glbStr.indexOf("'",intNextQuote+1);
if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!=" \")break ;
intCount=0; intTemp=intNextQuote;
ในขณะที่(glbStr.charAt(--intTemp)==" \")intCount ++;
ถ้า(intCount%2==0)พัง;
-
ถ้า (intNextQuote==-1) พัง;
str+="<q>"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"</q>'";
i=intNextQuote;
สถานะสุดท้าย = "";
หยุดพัก;
กรณี "/":
str+=htmlเข้ารหัส(c);
ถ้า(glbStr.charAt(i+1)=="/"){
intNextQuote=i;
intNextQuote=glbStr.indexOf('rn',intNextQuote+1);
ถ้า(intNextQuote==-1)intNextQuote=glbStr.length;
str=str.substring(0,str.ความยาว-1);
str+="<span class="comments">/"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"</span>";
i=intNextQuote;
} อื่น ๆ if(glbStr.charAt(i+1)=="*"){
intNextQuote=i;
intNextQuote=glbStr.indexOf("*/",intNextQuote+1);
ถ้า(intNextQuote==-1)กลับมา;
str=str.substring(0,str.ความยาว-1);
str+="<span class="comments">/"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"*/</span>";
i=intNextQuote+1;
}else if(str.match(/(?:(?:[!=(]|</var>|[|,|n|:)[ t]*/$)|^ n?[t ]*/$/)){
intNextQuote=i;
ในขณะที่(intNextQuote!=-1&&intNextQuote<glbStr.length){
intNextQuote=glbStr.indexOf("/",intNextQuote+1);
if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!=" \")break ;
intCount=0;intTemp=intNextQuote;
ในขณะที่(glbStr.charAt(--intTemp)==" \")intCount ++;
ถ้า(intCount%2==0)พัง;
-
ถ้า (intNextQuote==-1) พัง;
str+="<span class="regexp">"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"</span>/";
i=intNextQuote;
สถานะสุดท้าย = "";
-
สถานะสุดท้าย = "";
หยุดพัก;
ค่าเริ่มต้น:
ถ้า(c.match(/w/))คำ+=c; //ในคำ
ถ้า(c.match(/W/)){
ถ้า(คำ!='')
str+=word.replace(this.regKW,this.clKW).replace(this.regObj,this.clObj).replace(this.regMP,this.clMP) + htmlEncodef(c)
อื่น str+=htmlEncodef(c);
คำ = '';
-
สถานะสุดท้าย = "";
หยุดพัก;
-
-
กลับ str.replace(/(s*r?n)+$/,'');
-
-
ฟังก์ชั่น str2styled (x, ภาษา) {
var _A = lexers[ภาษา].lex(html2txt(x)).split(/n/);
for(i=0;i<_A.length;i++){_A[i] = '<li><span>'+_A[i].replace(/r/g,'').replace(/ t/g,' ').แทนที่(/ /g,' ')+'</span></li>';}
กลับ '<ol>'+_A.join('')+'</ol>';
-
var $ = function(e){return document.getElementById(e)};
window.onload = ฟังก์ชั่น () {
var pres = document.getElementsByTagName('pre');
for(k=0;k<pres.length;k++)if(pres[k].className.match(/bprehb/))
pres[k].innerHTML = str2styled(pres[k].innerHTML,'js')
-
</สคริปต์>
</หัว>
<ร่างกาย>
<pre id="ทดสอบ" class="preh js">
จุด var = ฟังก์ชั่น(){
นี่.x = 1;
this.y = 2;
this.valueOf = function(){return 'จุด:('+x+','+y+')'};
-
ถ้า(ค<2)ฉ()
var P = จุดใหม่ ();
การแจ้งเตือน (P.valueOf());
var rex_factory = function(){ส่งคืน {x:/re/g,y:/rere/g,z:[/re/,/rere/,/rerere/]}};
</pre>
<pre id="test2" class="preh js">
อีก = 'นี่คืออีกตัวอย่างหนึ่ง'
</pre>
</body>
</html>