直接转为高亮版,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>
<스타일 유형="텍스트/css">
pre.preh{font-family:Consolas,"루시다 콘솔",monospace;}
pre.preh ol{border:1px solid #ddd;margin:0;padding:0 0 0 4em;color:gray;}
pre.preh ol li{line-height:1.75em;border-bottom:1px solid #ddd;border-left:1px solid #ddd;}
pre.preh ol lispan{color:black;white-space:pre;}
pre.preh ol li 범위span.regexp{배경:녹색;색상:흰색}
pre.preh ol li 스팬 em{color:blue;font-style:normal;}
pre.preh ol li 범위 var.object{color:red}
pre.preh ol li 범위 var.method_property{color:orange}
pre.preh ol lispan.comments{color:#aaa}
pre.preh li var{color:blue;font-style:normal;}
pre.preh li q{color:green;}
q:이전{내용:없음;디스플레이:없음;}
</style>
<!--[IE인 경우]> <style>pre.preh{font-family:fixedsys,monospace}</style> <![endif]-->
<스크립트>
//키워드
var 키워드 = {js:{},html:{},css:{}};
키워드.js.keys="추상 중단 바이트 케이스 catch char 클래스 const 계속 기본 삭제 do double else 확장 false 최종 최종적으로 함수 goto에 대한 부동 소수점 인스턴스 인스턴스에서 가져오기 구현 긴 네이티브 null 패키지 개인 보호 공개 재설정 반환 짧은 정적 슈퍼 스위치 동기화 this throw temporary true try var void while with";
키워드.js.objects="앵커 애플릿 영역 인수 배열 부울 버튼 체크박스 컬렉션 암호화 날짜 사전 문서 드라이브 드라이브 요소 열거자 이벤트 파일 FileObject FileSystemObject 파일 업로드 폴더 폴더 양식 프레임 함수 전역 숨겨진 내역 HTMLElement 이미지 무한대 입력 JavaArray JavaClass JavaObject JavaPackage JSObject 레이어 링크 수학 MimeType 네비게이터 번호 개체 옵션 패키지 비밀번호 플러그인 PrivilegeManager 무작위 RegExp 화면 문자열 선택 텍스트 제출 텍스트 영역 URL VBArray 창 WScript";
키워드.js.properties="abs acos 작업 위 activeElement 경고 alinkColor 모든 altKey 앵커 앵커 appCodeName 애플릿 적용 appName appVersion 인수 arity asin 할당 atan atan2 atob availHeight availLeft availTop availWidth ActiveXObject 아래 배경 bgColor 큰 깜박임 흐림 굵은 테두리 테두리 너비 하단 btoa 버튼 호출 수신자 호출자 취소버블 캡처이벤트 ceil charAt charCodeAt charset 확인됨 하위 클래스 클래스이름 ClearClearInterval ClearTimeout 클릭 클라이언트정보 클라이언트X 클라이언트Y 닫힘 색상 깊이 컴파일 완료 concat 확인 생성자에 상황별 쿠키 cos crypto ctrlKey 현재 데이터가 포함되어 있음Charset defaultChecked defaultSelected defaultStatus default값 설명 비활성화ExternalCapture 비활성화Privilege 문서 도메인 E Echo 요소 요소 내장 활성화Plugin 활성화ExternalCapture 활성화 권한 인코딩 이스케이프 평가 이벤트 실행 exp 확장 FromPoint fgColor 파일 이름 고정 바닥 초점 찾기 글꼴 색상 글꼴 크기 양식 양식 전달 프레임 fromCharCode fromElement getAttribute getClass getDate getDay getFullYear getHours getMember getMilliseconds getMinutes getMonth getSeconds getSelection getSlot getTime getTimezoneOffset getUTCDate getUTCDay getUTCFullYear getUTCHours getUTCMilliseconds getUT C분 getUTCMonth getUTCSeconds getWindow getYear global go HandleEvent 높이 해시 숨겨진 기록 홈 호스트 호스트 이름 href hspace id idsignoreCase 이미지 인덱스 indexOf innerHTML innerText innerWidth insertAdjacentHTML insertAdjacentText isFinite isNAN italics java javaEnabled Join keyCode Links LN10 LN2 LOG10E LOG2E lang 언어 lastIndex lastIndexOf lastMatch lastModified lastParen 레이어 layerX layerY left leftContext 길이 링크 linkColor 로드 위치 위치Bar 로그 lowsrc MAX_VALUE MIN_VALUE 여백 일치 최대 메뉴 표시줄 방법 mimeTypes min modifiers moveAbove moveBelow moveBy moveTo moveToAbsolute multiline NaN NEGATIVE_INFINITY 이름 탐색 네비게이터 netscape 다음 숫자 offscreen버퍼링 오프셋 오프셋Height offsetLeft offsetParent offsetTop offsetWidth offsetX offsetY onabort onblur onchange onclick ondblclick ondragdrop onerror on 초점 onHelp onkeydown onkeypress Onkeyup OnmouseDown OnmouseMove OnMouseOut OnMouseOUT ONMOUSEUP ONRESET ONRESET ONRESICE ONSUBMIT ONSUBMIT ONSUBMIT ONSUBMIT ONSUBMIT OUTERHTML OUTERTEXT OUTERWIDTH_INFINITY PI PAGEX PAGEX PARSERPORTOR PARSE FARSE PARSE PARSE PARSE PARSE PARSE PARSE PARSE PARSEREPSER 플랫폼 플러그인 POP 포트 POW 기본 설정 이전 인쇄 프롬프트 프로토콜 프로토 타입 푸시 랜덤 readystate 이유 리퍼러 새로 고침 릴리스 이벤트 다시 로드 제거 속성 제거 크기 조정으로 반환값 역방향 오른쪽 오른쪽컨텍스트 라운드 SQRT1_2 SQRT2 화면X 화면 Y 스크롤 스크롤 막대 스크롤로 스크롤Into보기 스크롤 검색 선택 선택됨 선택 인덱스 자체 설정 속성 세트일 세트전체연도 세트핫키 세트시간 세트간격 세트멤버 세트밀리초 세트분 세트월 세트크기 조정 가능 세트초 세트슬롯 세트시간 세트타임아웃 세트UTCDate 세트UTC FullYear setUTCHours setUTCMillseconds setUTCMMinutes setUTCMonth setUTCSeconds setYear setZOptions Shift ShiftKey siblingAbove siblingBelow SignText sin Slice smallsort source sourceIndex splice 분할 sqrt src srcElement srcFilter 상태 상태 표시줄 중지 스트라이크 스타일 하위 제출 하위 문자열 하위 문자열 접미사 sun sup systemLanguage TYPE 태그이름 태그 taint taintEnabled tan 대상 테스트 텍스트 제목 toElement toGMTString toLocaleString toLowerCase 툴바 top to 문자열을 대문자로 toUTCString 유형 typeOf UTC unescape unshift untaint unwatch userAgent userLanguage 값 valueOf 가시성 vlinkColor vspace 너비 창 쓰기 writeln zIndex"를 확인합니다.
함수 htmlEncode(strS){
return strS.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");
}
함수 htmlEncodef(c){
return c=="&"?'&':(c=="<"?'<':(c=='>'?'>':c));
}
함수 htmlEncodefl(c){
return c=="&"?5:(c=="<"||c=='>'?4:1);
}
함수 html2txt(strS){
return strS.replace(/</g,"<").replace(/>/g,">").replace(/ /g," ").replace(/<br/?>/g," rn").replace(/&/g,"&").replace(/<.+?>/g,"");
}
var 어휘분석기 = {}
lexers.js = {
regKW:new RegExp("^("+keywords.js.keys.replace(/ /g,"|")+")$","g"),
regObj:new RegExp("^("+keywords.js.objects.replace(/ /g,"|")+")$","g"),
regMP:new RegExp("^("+keywords.js.properties.replace(/ /g,"|")+")$","g"),
clKW:'<em>$1</em>',
clObj:'<var class="object">$1</var>',
clMP:'<var class="method_property">$1</var>',
lex:함수{
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');
for(i=0;i<glbStr.length;i++){
c=glbStr.charAt(i);
스위치(c){
사례 """:
str+=htmlEncodef(c);
intNextQuote=i;
while(intNextQuote!=-1&&intNextQuote<glbStr.length){
intNextQuote=glbStr.indexOf(""",intNextQuote+1);
if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!=" \")break ;
int카운트=0; intTemp=intNextQuote;
while(glbStr.charAt(--intTemp)==" \")intCount ++;
if(intCount%2==0)break;
}
if(intNextQuote==-1)break;
str+="<q>"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"</q>"";
i=intNextQuote;
마지막상태="";
부서지다;
사례 "'":
str+=htmlEncodef(c);
intNextQuote=i;
while(intNextQuote!=-1&&intNextQuote<glbStr.length){
intNextQuote=glbStr.indexOf("'",intNextQuote+1);
if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!=" \")break ;
int카운트=0; intTemp=intNextQuote;
while(glbStr.charAt(--intTemp)==" \")intCount ++;
if(intCount%2==0)break;
}
if(intNextQuote==-1)break;
str+="<q>"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"</q>'";
i=intNextQuote;
마지막상태="";
부서지다;
사례 "/":
str+=htmlEncodef(c);
if(glbStr.charAt(i+1)=="/"){
intNextQuote=i;
intNextQuote=glbStr.indexOf('rn',intNextQuote+1);
if(intNextQuote==-1)intNextQuote=glbStr.length;
str=str.substring(0,str.length-1);
str+="<span class="comments">/"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"</span>";
i=intNextQuote;
}else if(glbStr.charAt(i+1)=="*"){
intNextQuote=i;
intNextQuote=glbStr.indexOf("*/",intNextQuote+1);
if(intNextQuote==-1)return;
str=str.substring(0,str.length-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;
while(intNextQuote!=-1&&intNextQuote<glbStr.length){
intNextQuote=glbStr.indexOf("/",intNextQuote+1);
if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!=" \")break ;
intCount=0;intTemp=intNextQuote;
while(glbStr.charAt(--intTemp)==" \")intCount ++;
if(intCount%2==0)break;
}
if(intNextQuote==-1)break;
str+="<span class="regexp">"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"</span>/";
i=intNextQuote;
마지막상태="";
}
마지막상태="";
부서지다;
기본:
if(c.match(/w/))word+=c; //한마디로
if(c.match(/W/)){
if(단어!='')
str+=word.replace(this.regKW,this.clKW).replace(this.regObj,this.clObj).replace(this.regMP,this.clMP) + htmlEncodef(c)
그렇지 않으면 str+=htmlEncodef(c);
단어 = '';
}
마지막상태="";
부서지다;
}
}
return 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,' ').replace(/ /g,' ')+'</span></li>';}
return '<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')
}
</script>
</head>
<본문>
<pre id="test" class="preh js">
var 포인트 = 함수(){
this.x = 1;
this.y = 2;
this.valueOf = function(){return 'Point:('+x+','+y+')'};
}
if(c<2)f()
var P = 새 포인트();
경고(P.valueOf());
var rex_factory = function(){return {x:/re/g,y:/rere/g,z:[/re/,/rere/,/rerere/]}};
</pre>
<pre id="test2" class="preh js">
another = '이것은 또 다른 예입니다'
</pre>
</body>
</html>