<html>
<head>
<title>JS格式化工具 </title>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<style> * { padding:0px; margin:5px; font-size:13px; font-family: arial 宋体; }
body { overflow:auto; border:0px none black; background-color:buttonface; }
li { margin:0px 0px 0px 40px; padding:2px 4px; } .quote { color:#999; }
.comments { color: #009090; }
.indent { margin-left:25px; }
.regexp { color:#F000F0; } #divTools { height:20px; border-bottom:1px solid #555; padding-left:15px; }
#divTools a { color:navy; text-decoration:none; height:20px; line-height:20px; padding:0px 25px; }
#divTools a:hover { color:white; background-color:navy; text-decoration:none; height:20px; line-height:20px; }
#divJSInput { display:none; width:600px; height:450px; border:2px outset buttonface; position:absolute; background-color:buttonface; z-Index:2; }
#divJSInputTitle { color:white; background-color:navy; height:20px; line-height:20px; padding:0px 10px; cursor:default; }
#txtJSInput { width:598px; height:406px; overflow:auto; padding:4px 8px; background-color:white;}
#divJSInputBar { height:24px; padding:0px 4px; }
#divJSInputBar input { width:110px; height:22px; border:1px solid #555; line-height:20px; }
#divJSOutput { background-color:white; border:1px inset buttonface; width:100%; height:500px; overflow:auto; }
#divWaiting { display:none; width:400px; height:60px; border:1px solid buttonface; position:absolute; background-color:#E0F0F0; z-Index:3; text-align:center; padding-top:10px; }
#divWaiting input { width:140px; height:22px; border:1px solid #555; line-height:20px; cursor:default; margin-top:4px; }
</style>
<script type="text/javascript"> window.onload=init; //------------------ // Static Variable //------------------ var KEYWORDS="abstract break byte case catch char class const continue default delete do double else extends false final finally float for function goto if implements import in instanceof int interface long native null package private protected public reset return short static super switch synchronized this throw transient true try var void while with"; var OBJECTS="Anchor Applet Area Arguments Array Boolean Button Checkbox Collection Crypto Date Dictionary Document Drive Drives Element Enumerator Event File FileObject FileSystemObject FileUpload Folder Folders Form Frame Function Global Hidden History HTMLElement Image Infinity Input JavaArray JavaClass JavaObject JavaPackage JSObject Layer Link Math MimeType Navigator Number Object Option Packages Password Plugin PrivilegeManager Random RegExp Screen Select String Submit Text Textarea URL VBArray Window WScript"; var METHODS_PROPERTIES="above abs acos action activeElement alert alinkColor all altKey anchor anchors appCodeName applets apply appName appVersion arguments arity asin assign atan atan2 atob availHeight availLeft availTop availWidth ActiveXObject back background below bgColor big blink blur bold border borderWidths bottom btoa button call callee caller cancelBubble captureEvents ceil charAt charCodeAt charset checked children classes className clear clearInterval clearTimeout click clientInformation clientX clientY close closed colorDepth compile complete concat confirm constructir contains contextual cookie cos crypto ctrlKey current data defaultCharset defaultChecked defaultSelected defaultStatus defaultValue description disableExternalCapture disablePrivilege document domain E Echo element elements embeds enabledPlugin enableExternalCapture enablePrivilege encoding escape eval event exec exp expando FromPoint fgColor fileName find fixed floor focus fontColor fontSize form forms forward frames fromCharCode fromElement getAttribute get getClass getDate getDay getFullYear getHours getMember getMilliseconds getMinutes getMonth getSeconds getSelection getSlot getTime getTimezoneOffset getUTCDate getUTCDay getUTCFullYear getUTCHours getUTCMilliseconds getUTCMinutes getUTCMonth getUTCSeconds getWindow getYear global go HandleEvent Height hash hidden history home host hostName href hspace id ids ignoreCase images index indexOf inner innerHTML innerText innerWidth insertAdjacentHTML insertAdjacentText isFinite isNAN italics java javaEnabled join keyCode Links LN10 LN2 LOG10E LOG2E lang language lastIndex lastIndexOf lastMatch lastModified lastParen layers layerX layerY left leftContext length link linkColor load location locationBar log lowsrc MAX_VALUE MIN_VALUE margins match max menubar method mimeTypes min modifiers moveAbove moveBelow moveBy moveTo moveToAbsolute multiline NaN NEGATIVE_INFINITY name navigate navigator netscape next number offscreenBuffering offset offsetHeight offsetLeft offsetParent offsetTop offsetWidth offsetX offsetY onabort onblur onchange onclick ondblclick ondragdrop onerror onfocus onHelp onkeydown onkeypress onkeyup onload onmousedown onmousemove onmouseout onmouseover onmouseup onmove onreset onresize onsubmit onunload open opener options outerHeight outerHTML outerText outerWidth POSITIVE_INFINITY PI paddings pageX pageXOffset pageY pageYOffset parent parentElement parentLayer parentWindow parse parseFloat parseInt pathname personalbar pixelDepth platform plugins pop port pow preference previous print prompt protocol prototype push random readyState reason referrer refresh releaseEvents reload removeAttribute removeMember replace resizeBy resizeTo returnValue reverse right rightcontext round SQRT1_2 SQRT2 screenX screenY scroll scrollbars scrollBy scrollIntoView scrollTo search select selected selectedIndex self setAttribute setDay setFullYear setHotkeys setHours setInterval setMember setMilliseconds setMinutes setMonth setResizable setSeconds setSlot setTime setTimeout setUTCDate setUTCFullYear setUTCHours setUTCMillseconds setUTCMinutes setUTCMonth setUTCSeconds setYear setZOptions shift shiftKey siblingAbove siblingBelow signText sin slice smallsort source sourceIndex splice split sqrt src srcElement srcFilter status statusbar stop strike style sub submit substr substring suffixes sun sup systemLanguage TYPE tagName tags taint taintEnabled tan target test text title toElement toGMTString toLocaleString toLowerCase toolbar top toString toUpperCase toUTCString type typeOf UTC unescape unshift untaint unwatch userAgent userLanguage value valueOf visibility vlinkColor vspace watch which width window write writeln x y zIndex"; var OPS="! $ % & * + - // / : < = > ? [ ] ^ | ~ is new sizeof typeof unchecked"; var regKW=new RegExp("(\\W"+KEYWORDS.replace(/ /g,"$)|(\\W")+"$)","g"); var regObj=new RegExp("(\\W"+OBJECTS.replace(/ /g,"$)|(\\W")+"$)","g"); var regMP=new RegExp("(\\W"+METHODS_PROPERTIES.replace(/ /g,"$)|(\\W")+"$)","g"); //var regOP=new RegExp("(\\W"+OPS.replace(/ /g,"$)|(\\W")+"$)","g"); var colorKW="blue"; var colorObj="red"; var colorMP="#FF8000"; var colorOP="#004000"; //------------------ // Global Variables //------------------ var divJSInput, txtJSInput, divJSOutput, divWaiting, spnProcess; var glbStr, glbP, glbRe, curRe, glbTimer; function init(){ // init global variables divJSInput=document.getElementByIdx("divJSInput"); txtJSInput=document.getElementByIdx("txtJSInput"); divJSOutput=document.getElementByIdx("divJSOutput"); divWaiting=document.getElementByIdx("divWaiting"); spnProcess=document.getElementByIdx("spnProcess"); // init window state maximizeWindow(); divJSOutput.style.width=document.body.clientWidth-2; divJSOutput.style.height=document.body.clientHeight-26; // init global events divJSInput.onkeydown=divJSInput_keydown; } //------------------ // event scripts //------------------ function divJSInput_keydown(e){ var e=window.event?window.event:e; var srcEle=e.srcElement?e.srcElement:e.target; var sel; if(e.keyCode==27)hideJSInput(); if(e.keyCode==13&&e.ctrlKey)execJSInput(); if(e.keyCode==9&&srcEle==txtJSInput){ document.selection.createRange().text="\t"; return(false); // not support FF } } //------------------ // functional scripts //------------------ function showJSInput(){ with(divJSInput.style){ display="block"; left=(document.body.clientWidth-divJSInput.offsetWidth)/2; top=(document.body.clientHeight-divJSInput.offsetHeight)/2; } txtJSInput.focus(); return(false); } function hideJSInput(){ divJSInput.style.display="none"; } function execJSInput(){ hideJSInput(); divJSOutput.innerHTML=""; glbStr=txtJSInput.value.replace(/\r\n[ \t]+/gi,"\r\n").replace(/(\r\n)+/gi,"\r\n"); glbP=0; curRe=glbRe=document.createElement("div"); divJSOutput.appendChild(glbRe); glbRe.className="codeRoot"; showWait(); core_analysis(); } function showWait(){ document.body.style.cursor="wait"; with(divWaiting.style){ display="block"; left=(document.body.clientWidth-divWaiting.offsetWidth)/2; top=(document.body.clientHeight-divWaiting.offsetHeight)/2; } spnProcess.innerHTML="0.00% ( 0 / 0 )" return(false); } function stopExec(){ document.body.style.cursor=""; divWaiting.style.display="none"; txta.value=divJSOutput.innerHTML; try{ clearTimeout(glbTimer); } catch(e){ } return(false); } function core_analysis(){ var str=" ", c="", lastState="", seq, intNextQuote, intTemp, intCount, intWordStart; spnProcess.innerHTML=parseFloat(glbP/glbStr.length*100).toFixed(2)+"% ( "+glbP+" / "+glbStr.length+" )"; for(var i=glbP; i<glbStr.length; i++){ c=glbStr.charAt(i); str+=htmlEncode(c); switch(c){ case "\r": case " ": case "\t": if(lastState=="\r\n"){ str=" "; break; } if(c.match(/\W/)&&glbStr.charAt(i-1).match(/\w/)){ str=str.substring(0,str.length-htmlEncode(c).length); str=str.replace(regKW,clKW).replace(regObj,clObj).replace(regMP,clMP)+htmlEncode(c); } break; case "\n": case ";": if(lastState=="\r\n"){ str=" "; break; } outputLn(str); str=" "; lastState="\r\n"; if(i-glbP>200){ glbP=i+1; glbTimer=setTimeout(core_analysis); return; } break; case "\"": 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=\"quote\">"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"<\/span>\""; i=intNextQuote; lastState=""; break; case "\'": 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=\"quote\">"+htmlEncode(glbStr.substring(i+1,intNextQuote))+"<\/span>\'"; i=intNextQuote; lastState=""; break; case "\/": if(glbStr.charAt(i+1)=="\/"){ intNextQuote=i; intNextQuote=glbStr.indexOf("\r\n",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(/[=(][ \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; lastState=""; } lastState=""; break; case "{": outputLn(str); str=" "; seq=document.createElement("div"); seq.className="indent"; curRe.appendChild(seq); curRe=seq; lastState="\r\n"; if(i-glbP>200){ glbP=i+1; glbTimer=setTimeout(core_analysis); return; } break; case "}": outputLn(str.substring(0,str.length-1)); str="} "; lastState=""; curRe=curRe.parentNode; break; default: if(c.match(/\w/)&&glbStr.charAt(i-1).match(/\W/)){ intWordStart=i; } if(c.match(/\W/)&&glbStr.charAt(i-1).match(/\w/)){ str=str.substring(0,str.length-htmlEncode(c).length); str=str.replace(regKW,clKW).replace(regObj,clObj).replace(regMP,clMP)+htmlEncode(c); } lastState=""; break; } } if(i==glbStr.length){ if(str!=""){ outputLn(str); str=" "; } stopExec(); } } function outputLn(theStr){ var seq=document.createElement("p"); seq.innerHTML=theStr; curRe.appendChild(seq); } function clKW(str){ return(str.charAt(0)+str.substring(1).fontcolor(colorKW)); } function clObj(str){ return(str.charAt(0)+str.substring(1).fontcolor(colorObj)); } function clMP(str){ return(str.charAt(0)+str.substring(1).fontcolor(colorMP)); } function clOP(str){ return(str.charAt(0)+str.substring(1).fontcolor(colorOP)); } //------------------ // global scripts //------------------ function maximizeWindow(){ window.moveTo(0,0); window.resizeTo(screen.availWidth,screen.availHeight); } function htmlEncode(strS){ return(strS.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/ /g," ").replace(/\r\n/g,"<br\/>")); } </script>
</head>
<body>
<div id="divTools">
<a href="#" onclick="return(showJSInput());">点击我输入要格式化的JS</a>
</div>
<div id="divJSInput">
<div id="divJSInputTitle">请输入JS:-</div>
<textarea id="txtJSInput"></textarea>
<div id="divJSInputBar">
<input type="button" value="OK" onclick="execJSInput();" />
<input type="button" value="Cancel" onclick="hideJSInput();" />
</div>
</div>
<div id="divJSOutput"></div>
<textarea rows=20 cols=200 id="txta">
</textarea>
<div id="divWaiting">
Processing...<span id="spnProcess"></span><br>
<input type="button" value="Stop" onclick="stopExec();" />
</div>
</body>
</html>

  

JS格式化工具(转)的更多相关文章

  1. 推荐两款好用的JS格式化工具

    工具一: 直接在Chrome浏览器中,F12,打开Sources栏,找到JS文件,点击下面的花括号即可. 工具二: 使用notepad++ 格式化JS文件. 1.下载 jstool 插件(https: ...

  2. 新一代记事本“Notepad++”个性化设置备份

    Notepad++是一套非常有特色的自由软件的纯文字编辑器(许可证:GPL),有完整的中文化接口及支援多国语言撰写的功能(UTF8 技术).它的功能比 Windows 中的 Notepad(记事簿)强 ...

  3. webqq 获得好友列表hash算法 获得最新hash的方法

    webqq获得好友列表的hash算法,大约每一个月中旬会变动一次.知道怎么获得他就能够了. js文件路径 http://web.qstatic.com/webqqpic/pubapps/0/50/eq ...

  4. 反编译 轻松调频 Android APP 下载“飞鱼秀”录音

    经常听“飞鱼秀”,但是由于时间的原因,只能听回放,但是轻松调频的APP做的有点儿... 听回放的时候经常会中断,还不能拖动进度条,就决定把录音下载下来听. 1.反编译apk(Android反编译过程见 ...

  5. 反爬虫破解系列-汽车之家利用css样式替换文字破解方法

    网站: 汽车之家:http://club.autohome.com.cn/ 以论坛为例 反爬虫措施: 在论坛发布的贴子正文中随机抽取某几个字使用span标签代替,标签内容位空,但css样式显示为所代替 ...

  6. javascrpt 页面格式化页面

    下面这个页面,格式化javaScript <html> <head> <title>JS格式化工具 </title> <meta http-equ ...

  7. jQuery Cloud Zoom:图片放大镜插件 破解插件

    /* Cloud Zoom 10 Site License (CZ01-10). Version 3.1 rev 1312051822 */ (function(e) { function s(a) ...

  8. JS Nice – JavaScript 代码美化和格式化工具

    JS Nice 是一款让经过混淆处理的 JavaScript 代码可读更好的工具.它使用一种新型的用于 JavaScript 代码美化的去混淆和去压缩引擎.JSNice 采用先进的机器学习和程序分析技 ...

  9. JavaScript的js文件压缩和格式化工具

    JavaScriptcompressor.com这个网站可是大名鼎鼎啊.以前在找到过压缩 Javascript 代码的程序,一直在用,感觉效果不错.域名是: http://javascriptcomp ...

随机推荐

  1. jquery 动态绑定bind()及模拟鼠标点击A链接

    近来自觉前端有小小进步,幸而记之. 1.两个 css class 紧挨在一起 则在html元素中,要同时拥有这两个class,才能起作用 .block.db{ background-image:url ...

  2. RDD变换

    对Key/Value型RDD进行变换 groupBy按Key汇聚 fruit,applevegetable,cucumberfruit,cherryvegetable,beanfruit,banana ...

  3. netstat --numeric-ports -a -t -p 排查hadoop主从节点是否建立通信

    tcp  通信 [root@hadoop2 logs]# netstat --numeric-ports -a -tActive Internet connections (servers and e ...

  4. 添加和删除节点(HTML元素)

    创建新的HTML元素 <div id="div1"> <p id="p1">这是一个段落</p> <p id=&quo ...

  5. CentOS 7下Keepalived + HAProxy 搭建配置详解

    第一步:准备 1. 简介 本文搭建的是利用 Keepalived 实现 HAProxy 的热备方案,即两台主机上的 HAProxy 实例同时运行,其中全总较高的实例为 MASTER,MASTER出现异 ...

  6. EF1:MVC/EF(Entity Framewok) /First Migrations

    1. 概念 Entity Framework: ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案.(此处 ...

  7. openfire重新配置数据库oracle、mysql

    1.openfire重新配置设置: 删除target/openfire/conf/openfire.xml中的 <setup>true</setup> 2.删除浏览器之前访问过 ...

  8. Java 学习路线建议

    在大家看之前,我要先声明两点.1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和Java后端开发的同学请适当参考其学习思想即可, ...

  9. UI:数据的解析

    在懒加载的时候要注意事项: 必须使用 self.XX 的样式去开辟空间,不能使用 _XX 的格式去开辟,因为前者是内部的 set 方法,而后者并不走内部的 set 方法. json 文件的创建  xm ...

  10. c语言和c++栈的简单实现以及构造器的原理

    也就是训练将原来的c语言 用类表示出来.. 关于构造器: //1与类名相同 没有返回值 被系统生成对象时自动调用,用于初始化 //2 可以有参数 构造器重载 默认参数 //3 重载和默认不能同时存在, ...