찾다
웹 프론트엔드JS 튜토리얼JS 코드 형식 지정 및 구문 색상 지정 V2_javascript 팁

2차 버전으로 업그레이드 된 기념으로 포스팅을 열어봅니다 ㅎㅎ

Ver1.1에서 컨텐츠 업그레이드
1. 기능 목록 추가
2. 기능 추가
3. 분석 (다른 소프트웨어에서 이 기능을 구현한 것을 본 적이 없습니다. 저는 창의적이고 문제가 많습니다. 현재 분석 능력은 상대적으로 제한적입니다. 전역 함수 종속성만 분석할 수 있습니다. 복잡한 코드에서는 버그가 발생할 수 있습니다.)
4. for 문 분석 버그 수정
5. 구문 접기 버그 수정
6. 모두 축소 작업 방식 개선 ※ 행 개수가 너무 많을 때 충돌 방지를 위한 모두 확장 기능
7. 줄 번호 분석 메커니즘을 개선하여 줄 수가 너무 많을 때 충돌을 방지합니다

코드 복사 코드는 다음과 같습니다.



JSer 버전 2.0


/* 전역 CSS */

* { padding:0px; 여백:0px; 글꼴 크기:13px; 글꼴 모음: Arial 宋体; }

본문 { overflow:auto; 테두리:0px 없음 검은색; 배경색:버튼면; }

li { 여백:0px 0px 0px 40px; 패딩:2px 4px; }

div { 글꼴 크기:13px; 줄 높이:14px; }

p { 글꼴 크기:13px; 줄 높이:14px; }

/* 클래스 CSS */

.codeRoot { line-height:14px; }
.quote { color:#999; }
.comments { color: #009090; }
.indent { margin-left:25px; }
.regexp { color:#F000F0; }
.keyWord { color:blue; }
.object { color:red; }
.method_property { color:#FF8000; }
.operator { color:#004000; }

.colsp { 글꼴 크기:12px; 너비:14px; 높이:14px; 오버플로:숨김; 테두리:1px 아웃셋 버튼페이스; 텍스트 정렬:가운데; 
커서:포인터; 왼쪽 패딩:2px; }
.colsp2 { 글꼴 크기:12px; 너비:14px; 높이:14px; 오버플로:숨김; 테두리:1px 삽입 버튼페이스; 텍스트 정렬:가운데; 
커서:포인터; 왼쪽 패딩:2px; 색상:빨간색!중요; 배경색:#E0FFF8!중요; }

/* 식별된 CSS */

#divTools { height:20px; border-bottom:1px solid #555; 왼쪽 패딩:15px; }

#divTools a { color:navy; 텍스트 장식:없음; 높이:20px; 줄 높이:20px; 패딩:0px 25px; }

#divTools a:hover { color:white; 배경색:네이비; 텍스트 장식:없음; 높이:20px; 줄 높이:20px; }

#divJSInput { display:none; 너비:600px; 높이:450px; 테두리:2px 시작 버튼페이스; 위치:절대; 배경-
color:buttonface; z-색인:2; }

#divJSInputTitle { color:white; 배경색:네이비; 높이:20px; 줄 높이:20px; 패딩:0px 10px; 커서:기본값; }

#txtJSInput { 너비:598px; 높이:406px; 오버플로:자동; 패딩:4px 8px; 배경색:흰색;}

#divJSInputBar { 높이:24px; 패딩:0px 4px; }

#divJSInputBar 입력 { 너비:110px; 높이:22px; 테두리:1px 솔리드 #555; 줄 높이:20px; }

#divMain { 너비:100%; 높이:500; 오버플로:숨김; 위치:상대적; }

#divJSOutputLineNo { 너비:32px; 높이:100%; 오버플로:숨김; 배경색:#DDD; 위치:절대; 왼쪽:0px; 상단:0px; 
텍스트 정렬:오른쪽; }

#divJSOutputLineNo p {  font-size:12px; 줄 높이:14px; }

#divJSOutputPlus { 너비:14px; 높이:100%; 오버플로:숨김; 배경색:#EEE; 위치:절대; 왼쪽:32px; 상단:0px; z
-색인:2; }

#divJSOutputPlus p {  글꼴 크기:12px; 줄 높이:14px; }

#divJSOutput { 배경색:흰색; 테두리:1px 삽입 버튼페이스; 높이:100%; 위치:절대; 왼쪽:45px; 상단:0px; 
오버플로:스크롤; }

#divWaiting { display:none; 너비:400px; 높이:60px; 테두리:1px 솔리드 버튼페이스; 위치:절대; 배경-
색상:#E0F0F0; z-색인:3; 텍스트 정렬:가운데; 패딩 상단:10px; }

#div입력 대기 중 { width:140px; 높이:22px; 테두리:1px 솔리드 #555; 줄 높이:20px; 커서:기본값; 여백 상단:4px; }

#divJSExport { display:none; 너비:600px; 높이:450px; 테두리:2px 시작 버튼페이스; 위치:절대; 배경-
color:buttonface; z-색인:2; }

#divJSExportTitle { color:white; 배경색:네이비; 높이:20px; 줄 높이:20px; 패딩:0px 10px; 커서:기본값; }

#selJSExport { 너비:598px; 높이:406px; 오버플로:자동; 패딩:4px 8px; 배경색:흰색; }

#divJSExportContent { 너비:598px; 높이:406px; 오버플로:자동; 패딩:4px 8px; 배경색:흰색; 표시:없음; }

#divJSExportBar { 높이:24px; 패딩:0px 4px; }

#divJSExportBar 입력 { 너비:170px; 높이:22px; 테두리:1px 솔리드 #555; 줄 높이:20px; }


<script> <BR>/********************** <BR> Author: Hutia <br><br>*********************/ <br><br>window.onload=init; <br><br><BR>//------------------ <BR>// Static Variable <BR>//------------------ <br><br>var KEYWORDS="abstract break byte case catch char class const continue default delete do double else extends false final <BR>finally float for function goto if implements import in instanceof int interface long native null package private protected <BR>public reset return short static super switch synchronized this throw transient true try var void while with"; <BR>var OBJECTS="Anchor Applet Area Arguments Array Boolean Button Checkbox Collection Crypto Date Dictionary Document Drive <BR>Drives Element Enumerator Event File FileObject FileSystemObject FileUpload Folder Folders Form Frame Function Global Hidden <BR>History HTMLElement Image Infinity Input JavaArray JavaClass JavaObject JavaPackage JSObject Layer Link Math MimeType <BR>Navigator Number Object Option Packages Password Plugin PrivilegeManager Random RegExp Screen Select String Submit Text <BR>Textarea URL VBArray Window WScript"; <BR>var METHODS_PROPERTIES="above abs acos action activeElement alert alinkColor all altKey anchor anchors appCodeName applets <BR>apply appName appVersion arguments arity asin assign atan atan2 atob availHeight availLeft availTop availWidth ActiveXObject <BR>back background below bgColor big blink blur bold border borderWidths bottom btoa button call callee caller cancelBubble <BR>captureEvents ceil charAt charCodeAt charset checked children classes className clear clearInterval clearTimeout click <BR>clientInformation clientX clientY close closed colorDepth compile complete concat confirm constructir contains contextual <BR>cookie cos crypto ctrlKey current data defaultCharset defaultChecked defaultSelected defaultStatus defaultValue description <BR>disableExternalCapture disablePrivilege document domain E Echo element elements embeds enabledPlugin enableExternalCapture <BR>enablePrivilege encoding escape eval event exec exp expando FromPoint fgColor fileName find fixed floor focus fontColor <BR>fontSize form forms forward frames fromCharCode fromElement getAttribute get getClass getDate getDay getFullYear getHours <BR>getMember getMilliseconds getMinutes getMonth getSeconds getSelection getSlot getTime getTimezoneOffset getUTCDate getUTCDay <BR>getUTCFullYear getUTCHours getUTCMilliseconds getUTCMinutes getUTCMonth getUTCSeconds getWindow getYear global go HandleEvent <BR>Height hash hidden history home host hostName href hspace id ids ignoreCase images index indexOf inner innerHTML innerText <BR>innerWidth insertAdjacentHTML insertAdjacentText isFinite isNAN italics java javaEnabled join keyCode Links LN10 LN2 LOG10E <BR>LOG2E lang language lastIndex lastIndexOf lastMatch lastModified lastParen layers layerX layerY left leftContext length link <BR>linkColor load location locationBar log lowsrc MAX_VALUE MIN_VALUE margins match max menubar method mimeTypes min modifiers <BR>moveAbove moveBelow moveBy moveTo moveToAbsolute multiline NaN NEGATIVE_INFINITY name navigate navigator netscape next <BR>number offscreenBuffering offset offsetHeight offsetLeft offsetParent offsetTop offsetWidth offsetX offsetY onabort onblur <BR>onchange onclick ondblclick ondragdrop onerror onfocus onHelp onkeydown onkeypress onkeyup onload onmousedown onmousemove <BR>onmouseout onmouseover onmouseup onmove onreset onresize onsubmit onunload open opener options outerHeight outerHTML <BR>outerText outerWidth POSITIVE_INFINITY PI paddings pageX pageXOffset pageY pageYOffset parent parentElement parentLayer <BR>parentWindow parse parseFloat parseInt pathname personalbar pixelDepth platform plugins pop port pow preference previous <BR>print prompt protocol prototype push random readyState reason referrer refresh releaseEvents reload removeAttribute <BR>removeMember replace resizeBy resizeTo returnValue reverse right rightcontext round SQRT1_2 SQRT2 screenX screenY scroll <BR>scrollbars scrollBy scrollIntoView scrollTo search select selected selectedIndex self setAttribute setDay setFullYear <BR>setHotkeys setHours setInterval setMember setMilliseconds setMinutes setMonth setResizable setSeconds setSlot setTime <BR>setTimeout setUTCDate setUTCFullYear setUTCHours setUTCMillseconds setUTCMinutes setUTCMonth setUTCSeconds setYear <BR>setZOptions shift shiftKey siblingAbove siblingBelow signText sin slice smallsort source sourceIndex splice split sqrt src <BR>srcElement srcFilter status statusbar stop strike style sub submit substr substring suffixes sun sup systemLanguage TYPE <BR>tagName tags taint taintEnabled tan target test text title toElement toGMTString toLocaleString toLowerCase toolbar top <BR>toString toUpperCase toUTCString type typeOf UTC unescape unshift untaint unwatch userAgent userLanguage value valueOf <BR>visibility vlinkColor vspace watch which width window write writeln x y zIndex"; <BR>var OPS="! $ % & * + - // / : < = > ? [ ] ^ | ~ is new sizeof typeof unchecked"; <br><br>var regKW=new RegExp("(\\W"+KEYWORDS.replace(/ /g,"$)|(\\W")+"$)","g"); <BR>var regObj=new RegExp("(\\W"+OBJECTS.replace(/ /g,"$)|(\\W")+"$)","g"); <BR>var regMP=new RegExp("(\\W"+METHODS_PROPERTIES.replace(/ /g,"$)|(\\W")+"$)","g"); <BR>//var regOP=new RegExp("(\\W"+OPS.replace(/ /g,"$)|(\\W")+"$)","g"); <br><br>//------------------ <BR>// Global Variables <BR>//------------------ <BR>var divJSInput, txtJSInput, divMain, divJSOutputLineNo, divJSOutputPlus, divJSOutput, divWaiting; <BR>var spnProcess, cmdStop, divJSExport, selJSExport, divJSExportContent; <BR>var glbStr, glbP, glbRe, curRe, glbTimer, glbBusy, glbFuntionNames; <br><br><BR>function init(){ <BR> // init global variables <BR> divJSInput=document.getElementById("divJSInput"); <BR> txtJSInput=document.getElementById("txtJSInput"); <BR> divMain=document.getElementById("divMain"); <BR> divJSOutputLineNo=document.getElementById("divJSOutputLineNo"); <BR> divJSOutputPlus=document.getElementById("divJSOutputPlus"); <BR> divJSOutput=document.getElementById("divJSOutput"); <BR> divWaiting=document.getElementById("divWaiting"); <BR> spnProcess=document.getElementById("spnProcess"); <BR> cmdStop=document.getElementById("cmdStop"); <BR> divJSExport=document.getElementById("divJSExport"); <BR>    selJSExport=document.getElementById("selJSExport"); <BR>    divJSExportContent=document.getElementById("divJSExportContent"); <br><br>    // 창 상태 초기화 <BR>    maximizeWindow(); <br><br>    divMain.style.width=document.body.clientWidth-4; <BR>    divMain.style.height=document.body.clientHeight-26; <br><br>    divJSOutput.style.width=document.body.clientWidth-72; <br><br>     <BR>    // 전역 이벤트 초기화 <br><br>divJSOutputLineNo.onselectstart=divJSOutputLineNo.onselect=divJSOutputPlus.onselectstart=divJSOutputPlus.onselect=cancelEvent <br><br>    divJSOutput .onscroll=divJSOutput_onscroll; <br><br>    divJSInput.onkeydown=divJSInput_keydown; <BR>    divJSExport.onkeydown=divJSExport_keydown; <br><br>} <br><br><BR>//------ <BR>// 이벤트 스크립트 <BR>//-- ---------------- <br><br>function cancelEvents(e){ <BR>    var e=window.event?window.event:e; <BR>    e.returnValue=false; <BR>    반품(거짓); <BR>} <br><br>function divJSInput_keydown(e){ <BR>    var e=window.event?window.event:e; <BR>    var srcEle=e.srcElement?e.srcElement:e.target; <BR>    var sel; <BR>    if(e.keyCode==27)hideJSInput(); <BR>    if(e.keyCode==13&&e.ctrlKey)execJSInput(); <BR>    if(e.keyCode==9&&srcEle==txtJSInput){ <BR>        document.selection.createRange().text="t";return(false); // FF를 지원하지 않음     <BR>    } <BR>} <br><br>function divJSExport_keydown(e){ <BR>    var e=window.event?window.event:e; <BR>    var srcEle=e.srcElement?e.srcElement:e.target; <BR>    var sel; <BR>    if(e.keyCode==27)hideJSExport(); <BR>    if(e.keyCode==13&&e.ctrlKey)hideJSExport(); <BR>} <br><br>함수 divJSOutput_onscroll(){ <BR>    divJSOutputLineNo.scrollTop=divJSOutputPlus.scrollTop=divJSOutput.scrollTop; <BR>} <br><br><br><br>//------ <BR>// 기능적 스크립트 <BR>//-- ---------------- <br><br>function showJSInput(){ <BR>    if(glbBusy)return; <BR>    hideJSExport(); <BR>    with(divJSInput.style){ <BR>        display="block"; <BR>        left=(document.body.clientWidth-divJSInput.offsetWidth)/2; <BR>        top=(document.body.clientHeight-divJSInput.offsetHeight)/2; <BR>    } <br><br>    txtJSInput.focus(); <br><br>    반품(false); <BR>} <br><br>function showJSExport(){ <BR>    if(glbBusy)return; <BR>    hideJSInput(); <BR>    with(divJSExport.style){ <BR>        display="block"; <BR>        left=(document.body.clientWidth-divJSExport.offsetWidth)/2; <BR>        top=(document.body.clientHeight-divJSExport.offsetHeight)/2; <BR>    } <BR>    divJSExportContent.style.display="none"; <BR>    selJSExport.style.display="block"; <br><br>    selJSExport.focus(); <BR>    반품(거짓); <BR>} <br><br>function hideJSInput(){ <BR>    divJSInput.style.display="none"; <BR>} <br><br>함수 hideJSExport(){ <BR>    divJSExport.style.display="none"; <BR>} <br><br>함수 execJSInput(){ <BR>    hideJSInput(); <br><br>    divJSOutput.innerHTML=""; <BR>    divJSOutputLineNo.innerHTML=""; <BR>    divJSOutputPlus.innerHTML=""; <br><br>    glbStr=txtJSInput.innerText; // FF를 지원하지 않음     <BR>    glbP=0; <BR>    glbFuntionNames=new Array(); <BR>    curRe=glbRe=document.createElement("div"); <br><br>    divJSOutput.appendChild(glbRe); <BR>    glbRe.className="codeRoot"; <br><br>    while(selJSExport.options.length>0)selJSExport.options[0]=null; <br><br>    showWait(startRecalcLine); <BR>    core_analytic(); <BR>}<br><br>함수 execJSExport(){ <BR>    var fns=new Array(), fcs=new Array(), str; <br><br>    for(var i=0; i<selJSExport.options.length; i ){ <BR>        if(selJSExport.options[i].selected){ <BR>           fns.push(selJSExport.options[ i].값); <BR>            str=selJSExport.options[i].obj.outerHTML; <BR>            시도해 보세요{ <BR>               str =selJSExport.options[i].obj.nextSibling.outerHTML; <BR>               str =selJSExport.options[i].obj.nextSibling.nextSibling.outerHTML; <BR>            }catch(e){} <BR>            fcs.push(str); <BR>        } <BR>    } <BR>    if(fns.length==0)return; <br><br>    divJSExportContent.style.display="block"; <BR>    selJSExport.style.display="none"; <br><br>    divJSExportContent.innerHTML=fcs.join("rn<br>rn"); <BR>} <br><br>함수 execJSExport_Dep(){ <BR>    var fns=new Array(), fcs=new Array(), str, regFNs=new Array(), needDepthTest; <br><br>    for(var i=0; i<selJSExport.options.length; i ){ <BR>        if(selJSExport.options[i].selected){ <BR>           fns.push(selJSExport.options[ i].값); <BR>            시도해 보세요{ <BR>               str=selJSExport.options[i].obj.nextSibling.outerHTML; <BR>            }catch(e){} <BR>            fcs.push(str); <BR>        } <BR>    } <BR>    if(fns.length==0)return; <br><br>    divJSExportContent.style.display="none"; <BR>    selJSExport.style.display="block"; <br><br>    needDepthTest=false; <BR>    for(var i=0;i<glbFuntionNames.length;i =1){ <BR>        if(!selJSExport.options[i].selected){ <BR>            for(j=0;j<fcs. length;j ){ <BR>               if(html2txt(fcs[j]).match(glbFuntionNames[i].replace(/./g,"\."))){ <BR>                  selJSExport.options[i]. 선택됨=참; <BR>                    needDepthTest=true; <BR>                    휴식; <BR>               } <BR>            } <BR>        } <BR>    } <BR>    if(needDepthTest)execJSExport_Dep(); <BR>} <br><br><BR>function showWait(onstop){ <BR>    glbBusy=true; <BR>    document.body.style.cursor="wait"; <br><br>    with(divWaiting.style){ <BR>        display="block"; <BR>        left=(document.body.clientWidth-divWaiting.offsetWidth)/2; <BR>        top=(document.body.clientHeight-divWaiting.offsetHeight)/2; <BR>    } <BR>    spnProcess.innerHTML="0.00%  ( 0 / 0 )"; <BR>    divWaiting.onstop=onstop; <BR>    cmdStop.focus(); <BR>    반품(거짓); <BR>}<br><br>함수 hideWait(){ <BR>    glbBusy=false; <BR>    document.body.style.cursor=""; <BR>    divWaiting.style.display="none"; <BR>    try{clearTimeout(glbTimer);}catch(e){} <BR>    try{divWaiting.onstop();}catch(e){} <BR>    return(false); <BR>} <br><br>function stopExec(){ hideWait(); } <br><br>함수 startRecalcLine(){ <BR>    var re="", re2=""; <BR>    if(glbBusy)return; <BR>    glbBusy=true; <br><br>    for(var i=0;i<parseInt(divJSOutput.scrollHeight/14 200);i ){ <BR>        re ="<p>" (i 1) ""; <BR>        re2 ="<p> "; <BR>    } <br><br>    divJSOutputLineNo.innerHTML=re; <BR>    divJSOutputPlus.innerHTML=re2; <BR>    divJSOutputPlus.buttons=new Array(); <br><br>    glbP=0; <br><br>    showWait(); <BR>    recalcLine(); <BR>    반품(거짓); <br><br>} <br><br><BR>function recalcLine(){ <BR>    var objs, j; <br><br>    objs=document.getElementsByTagName("div"); <BR>    for(var i=glbP;i<objs.length&&(i-glbP<30);i ){ <BR>        if(objs[i].className=="indent"){ <BR>           j=parseInt (objs[i].offsetTop/14)-1; <BR>            divJSOutputPlus.childNodes[j].className="colsp"; <BR>            divJSOutputPlus.childNodes[j].innerHTML="-"; <BR>            divJSOutputPlus.childNodes[j].linkedDIV=objs[i]; <BR>            divJSOutputPlus.childNodes[j].startIndex=j 1; <BR>            divJSOutputPlus.childNodes[j].endIndex=j Math.round(objs[i].offsetHeight/14); <BR>            if(objs[i].innerHTML!="")divJSOutputPlus.childNodes[j].endIndex ; <BR>            divJSOutputPlus.childNodes[j].switchDIV=divJSOutputPlus.childNodes[j].onclick=switchDIV; <BR>            divJSOutputPlus.buttons.push(divJSOutputPlus.childNodes[j]); <BR>        } <BR>    } <BR>    spnProcess.innerHTML=parseFloat(glbP/objs.length*100).toFixed(2) "%  ( " glbP " / " objs.length " )"; <BR>    if(i<objs.length){glbP=i; glbTimer=setTimeout(recalcLine); return;} <BR>    stopExec(); <BR>    divJSOutput_onscroll(); <BR>} <br><br>function switchDIV(disp){ <BR>    var y, obj; <BR>    if((this.className=="colsp"||disp=="hide")&&disp!="표시"){ <BR>        this.className="colsp2"; <BR>        this.innerHTML=" "; <BR>        for(var i=this.startIndex;i<this.endIndex;i ){ <BR>            divJSOutputLineNo.childNodes[i].style.display="none"; <BR>            divJSOutputPlus.childNodes[i].style.display="none"; <BR>        } <BR>        this.linkedDIV.style.display="none"; <BR>    }else{ <BR>        this.className="colsp"; <BR>        this.innerHTML="-"; <BR>        this.linkedDIV.style.display="block"; <BR>        for(var i=this.startIndex;i<this.endIndex;i ){ <BR>            divJSOutputLineNo.childNodes[i].style.display="block"; <BR>            divJSOutputPlus.childNodes[i].style.display="block"; <BR>            if(divJSOutputPlus.childNodes[i].className=="colsp2"){ <BR>               i=divJSOutputPlus.childNodes[i].endIndex-1; <BR>            } <BR>        } <BR>    } <BR>    divJSOutput_onscroll(); <BR>} <br><br>function collapseAll(index){ <BR>    index=isNaN(parseInt(index))?0:parseInt(index); <BR>    if(!divJSOutputPlus.buttons)return; <BR>    if(index<0)index=0; <BR>    if(index>divJSOutputPlus.buttons.length)return; <BR>    for(var i=index;i<divJSOutputPlus.buttons.length&&i-index<10;i )divJSOutputPlus.buttons[i].switchDIV("hide"); <BR>    setTimeout("collapseAll(" i ")"); <BR>} <br><br>function expandAll(index){ <BR>    index=isNaN(parseInt(index))?0:parseInt(index); <BR>    if(!divJSOutputPlus.buttons)return; <BR>    if(index<0)index=0; <BR>    if(index>divJSOutputPlus.buttons.length)return; <BR>    for(var i=index;i<divJSOutputPlus.buttons.length&&i-index<10;i )divJSOutputPlus.buttons[i].switchDIV("show"); <BR>    setTimeout("expandAll(" i ")"); <BR>} <br><br><BR>함수 코어_분석(){ <BR>    var str=" ", c="", lastState="", seq, intNextQuote, intTemp, intCount, intWordStart; <BR>    spnProcess.innerHTML=parseFloat(glbP/glbStr.length*100).toFixed(2) "%  ( " glbP " / " glbStr.length " )"; <BR>    for(var i=glbP;i<glbStr.length;i ){ <BR>        c=glbStr.charAt(i); <BR>        str =htmlEncode(c); <BR>        스위치(c){ <BR>            case "r": case " ": case "t": <BR>               if(lastState=="rn"){str=" ";break;} <BR>               str =str.substring(0,str.length-htmlEncode(c).length); <BR>                if(lastState=="blank")break; <BR>               if(c.match(/W/)&&glbStr.charAt(i-1).match(/w/)){ <BR>                  str=str.replace(regKW,clKW).replace(regObj,clObj) .replace(regMP,clMP); <BR>               } <BR>                str =htmlEncode(c); <BR>                lastState="blank"; <BR>            휴식; <BR>            사례 ";": <BR>                if(str.match(/Wfor.*?(/i))break; <BR>               // 주의 여기에는 중단이 없습니다 <BR>            사례 "n": <BR> if(lastState=="rn"){str=" ";break;}<BR>                outputLn(str); <BR>                str=" "; <BR>                lastState="rn"; <BR>               if(i-glbP>200){ <BR>                  glbP=i 1; <BR>                   glbTimer=setTimeout(core_analytic); <BR>                    반품; <BR>               } <BR>            휴식; <BR>            사례 """: <BR>                intNextQuote=i; <BR>              while(intNextQuote!=-1&&intNextQuote<glbStr.length){ <BR>                   intNextQuote=glbStr.indexOf(""",intNextQuote 1); <BR>                   if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!="\")break; <BR>                    intCount=0; intTemp=intNextQuote; <BR>                   while(glbStr.charAt(--intTemp)=="\")intCount ; <BR>                   if(intCount%2==0)break; <BR>               } <BR>                if(intNextQuote==-1)break; <BR>                str ="<span class="quote">" htmlEncode(glbStr.substring(i 1,intNextQuote)) """; <BR>               i=intNextQuote; <BR>              lastState=""; <BR>            break;     케이스 "'": <BR>               intNextQuote=i; <BR>              while(intNextQuote!=-1&&intNextQuote<glbStr.length){ <BR>                 intNextQuote=glbStr.indexOf("'",intNextQuote 1) <BR>                   if(intNextQuote==-1| |glbStr.charAt(intNextQuote-1)!="\")break; <BR>                 intCount=0;  <BR>                while(glbStr.charAt(--intTemp)=="\")intCount ; 🎜>                   if(intCount%2==0)break <BR>               }<BR>                if(intNextQuote==-1)break; <BR>                str ="<span class="quote">" htmlEncode(glbStr.substring(i 1,intNextQuote)) "'"; <BR>                i=intNextQuote; <BR>                lastState=""; <BR>            휴식; <BR>            케이스 "/": <BR>                if(glbStr.charAt(i 1)=="/"){ <BR>                   intNextQuote=i; <BR>                   intNextQuote=glbStr.indexOf("rn",intNextQuote 1); <BR>                   if(intNextQuote==-1)intNextQuote=glbStr.length; <BR>                   str=str.substring(0,str.length-1); <BR>                   str ="<span class="comments">/" htmlEncode(glbStr.substring(i 1,intNextQuote)) <BR> ""; <BR>                    i=intNextQuote; <BR>               }else if(glbStr.charAt(i 1)=="*"){ <BR>                  intNextQuote=i; <BR>                   intNextQuote=glbStr.indexOf("*/",intNextQuote 1); <BR>                   if(intNextQuote==-1)return; <BR>                   str=str.substring(0,str.length-1); <BR>                   str ="<span class="comments">/" htmlEncode(glbStr.substring(i 1,intNextQuote)) <BR> "*/"; <BR>                   i=intNextQuote 1; <BR>               }else if(str.match(/[=(][ t]*//)){ <BR>                 intNextQuote=i; <BR>                   while(intNextQuote!=-1&&intQuote& lt;glbStr.length){ <BR>>>                     intCount=0; intTemp=intNextQuote; <BR>                     while(glbStr.charAt(--intTemp)=="\")intCount ; <BR>                  if(intCount%2==0)break;            }<BR>                   if(intNextQuote==-1)break; <BR>                   str ="<span class="regexp">" htmlEncode(glbStr.substring(i 1,intNextQuote)) <BR> "/"; <BR>                    i=intNextQuote; <BR>                    lastState=""; <BR>               } <BR>                lastState=""; <BR>            휴식; <BR>            케이스 "{": <BR>                outputLn(str); <BR>                str=" "; <BR>                seq=document.createElement("div"); <BR>                seq.className="indent"; <BR>                curRe.appendChild(seq); <BR>                curRe=seq; <BR>                lastState="rn"; <BR>               if(i-glbP>200){ <BR>                  glbP=i 1; <BR>                   glbTimer=setTimeout(core_analytic); <BR>                    반품; <BR>               } <BR>            휴식; <BR>            케이스 "}": <BR>                outputLn(str.substring(0,str.length-1)); <BR>                str="} "; <BR>                lastState=""; <BR>               curRe=curRe.parentNode; <BR>            휴식; <BR>            기본값: <BR>                if(c.match(/w/)&&glbStr.charAt(i-1).match(/W/)){intWordStart=i;} <BR>               if(c.match(/ W/)&&glbStr.charAt(i-1).match(/w/)){ <BR>                  str=str.substring(0,str.length-htmlEncode(c).length); <BR>                   str=str.replace(regKW,clKW).replace(regObj,clObj).replace(regMP,clMP) htmlEncode(c); <BR>               } <BR>                lastState=""; <BR>            휴식; <BR>        } <BR>    } <br><br>    if(i==glbStr.length){ <BR>        if(str!=""){ outputLn(str); str=" "; } <BR>        stopExec(); <BR>    } <br><br>} <br><br>function outputLn(theStr){ <BR> var seq, txt, fn; <BR> if(html2txt(theStr).match(/^[ \t\r\n]*$/))return; <BR> seq=document.createElement("p"); <BR> seq.innerHTML=theStr; <BR> curRe.appendChild(seq); <br><br> txt=html2txt(theStr); <BR> if(!txt)return; <BR> fn=txt.match(/function[ \t\r\n]+([\.\w]+?)[ \t\r\n]*\(.*?\)[ \t\r\n]*\{/); <BR> if(fn){ <BR> glbFuntionNames.push(fn[1]); <BR> selJSExport.options[selJSExport.options.length]=new Option(fn[0]+"}",fn[1]); <BR> selJSExport.options[selJSExport.options.length-1].obj=seq; <BR> } <BR> fn=txt.match(/([\.\w]+?)[ \t\r\n]*=[ \t\r\n]*function\W*\(.*?\)[ \t\r\n]*\{/); <BR> if(fn){ <BR> glbFuntionNames.push(fn[1]); <BR> selJSExport.options[selJSExport.options.length]=new Option(fn[0]+"}",fn[1]); <BR> selJSExport.options[selJSExport.options.length-1].obj=seq; <BR> } <BR>} <br><br>function clKW(str){ return(str.charAt(0)+"<span class=\"keyWord\">"+str.substring(1)+""); } <br><br>function clObj(str){ return(str.charAt(0)+"<span class=\"object\">"+str.substring(1)+""); } <br><br>function clMP(str){ return(str.charAt(0)+"<span class=\"method_property\">"+str.substring(1)+""); } <br><br>function clOP(str){ return(str.charAt(0)+"<span class=\"operator\">"+str.substring(1)+""); } <br><br><BR>//------------------ <BR>// global scripts <BR>//------------------ <br><br>function maximizeWindow(){ <BR> window.moveTo(0,0); <BR> window.resizeTo(screen.availWidth,screen.availHeight); <BR>} <br><br>function htmlEncode(strS){ <BR> return(strS.replace(/&/g,"&").replace(/,"<").replace(/>/g,">").replace(/ /g," ").replace(/ <BR>\r\n/g,"<br\/>")); <BR>} <br><br>function html2txt(strS){ <BR> return(strS.replace(/<.+?>/g,"").replace(/,"<").replace(/>/g,">").replace(/ /g," ").replace(/<br\/? <BR>>/g,"\r\n").replace(/&/g,"&")); <BR>} <br><br></script>




Input JS
Collapse All
Expand All
Export JS



    
Please Input the JS:

    
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Java vs JavaScript : 개발자를위한 세부 비교Java vs JavaScript : 개발자를위한 세부 비교May 16, 2025 am 12:01 AM

javaandjavaScriptAredistIntLanguages ​​: javaisusedforenterpriseandmobileApps, whilejavaScriptisforInciveWebPages.1) javaiscompiled, 정적으로 정적, Andrunsonjvm.2) javaScriptISNaterPreted, doineslicallytyted, andrunsinbrowsorsornode.js.3) javausepith

JavaScript 데이터 유형 : 브라우저와 Nodejs 사이에 차이가 있습니까?JavaScript 데이터 유형 : 브라우저와 Nodejs 사이에 차이가 있습니까?May 14, 2025 am 12:15 AM

JavaScript 코어 데이터 유형은 브라우저 및 Node.js에서 일관되지만 추가 유형과 다르게 처리됩니다. 1) 글로벌 객체는 브라우저의 창이고 node.js의 글로벌입니다. 2) 이진 데이터를 처리하는 데 사용되는 Node.js의 고유 버퍼 객체. 3) 성능 및 시간 처리에는 차이가 있으며 환경에 따라 코드를 조정해야합니다.

JavaScript 댓글 : / / * * /사용 안내서JavaScript 댓글 : / / * * /사용 안내서May 13, 2025 pm 03:49 PM

javaScriptUSTWOTYPESOFSOFCOMMENTS : 단일 라인 (//) 및 multi-line (//)

Python vs. JavaScript : 개발자를위한 비교 분석Python vs. JavaScript : 개발자를위한 비교 분석May 09, 2025 am 12:22 AM

Python과 JavaScript의 주요 차이점은 유형 시스템 및 응용 프로그램 시나리오입니다. 1. Python은 과학 컴퓨팅 및 데이터 분석에 적합한 동적 유형을 사용합니다. 2. JavaScript는 약한 유형을 채택하며 프론트 엔드 및 풀 스택 개발에 널리 사용됩니다. 두 사람은 비동기 프로그래밍 및 성능 최적화에서 고유 한 장점을 가지고 있으며 선택할 때 프로젝트 요구 사항에 따라 결정해야합니다.

Python vs. JavaScript : 작업에 적합한 도구 선택Python vs. JavaScript : 작업에 적합한 도구 선택May 08, 2025 am 12:10 AM

Python 또는 JavaScript를 선택할지 여부는 프로젝트 유형에 따라 다릅니다. 1) 데이터 과학 및 자동화 작업을 위해 Python을 선택하십시오. 2) 프론트 엔드 및 풀 스택 개발을 위해 JavaScript를 선택하십시오. Python은 데이터 처리 및 자동화 분야에서 강력한 라이브러리에 선호되는 반면 JavaScript는 웹 상호 작용 및 전체 스택 개발의 장점에 없어서는 안될 필수입니다.

파이썬 및 자바 스크립트 : 각각의 강점을 이해합니다파이썬 및 자바 스크립트 : 각각의 강점을 이해합니다May 06, 2025 am 12:15 AM

파이썬과 자바 스크립트는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구와 개인 선호도에 따라 다릅니다. 1. Python은 간결한 구문으로 데이터 과학 및 백엔드 개발에 적합하지만 실행 속도가 느립니다. 2. JavaScript는 프론트 엔드 개발의 모든 곳에 있으며 강력한 비동기 프로그래밍 기능을 가지고 있습니다. node.js는 풀 스택 개발에 적합하지만 구문은 복잡하고 오류가 발생할 수 있습니다.

JavaScript의 핵심 : C 또는 C에 구축 되었습니까?JavaScript의 핵심 : C 또는 C에 구축 되었습니까?May 05, 2025 am 12:07 AM

javaScriptisNotBuiltoncorc; it'SangretedLanguageThatrunsonOngineStenWrittenInc .1) javaScriptWasDesignEdasAlightweight, 해석 hanguageforwebbrowsers.2) Endinesevolvedfromsimpleplemporectreterstoccilpilers, 전기적으로 개선된다.

JavaScript 응용 프로그램 : 프론트 엔드에서 백엔드까지JavaScript 응용 프로그램 : 프론트 엔드에서 백엔드까지May 04, 2025 am 12:12 AM

JavaScript는 프론트 엔드 및 백엔드 개발에 사용할 수 있습니다. 프론트 엔드는 DOM 작업을 통해 사용자 경험을 향상시키고 백엔드는 Node.js를 통해 서버 작업을 처리합니다. 1. 프론트 엔드 예 : 웹 페이지 텍스트의 내용을 변경하십시오. 2. 백엔드 예제 : node.js 서버를 만듭니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.