网站首页
关于深山
客户案例
业务范围
联系深山
网络投票系统
企业网站建设
旅行社网站建设
小程序
留言板
技术文章
许愿墙(qq爱墙)
技术首页
百度小程序开发
微信小程序开发
微信公众号开发
uni-app
asp函数库
ASP
asp.net
DIV+CSS
HTML
SEO搜索引擎忧化
下载类信息
个人空间
代码生成
电商
python
页面特效
表格特效
导航菜单
图形特效
表单特效
时间日期
色彩类别
链接特效
网页特效
系统硬件
网站公告
网页学习
技术类文章
网站类信息
订阅本栏目 RSS
您所在的位置:
深山工作室
>
代码生成
> 正文
JS压缩
网络 2009/4/25 10:56:54 深山行者 字体:
大
中
小
浏览 8903
以下为详细代码
<HTML><HEAD><TITLE>Format</TITLE> <META content="MSHTML 6.00.2800.1528" name=GENERATOR> <META content="" name=Author> <META content="" name=Keywords> <META content="" name=Description></HEAD> <BODY> <SCRIPT language=JavaScript> <!-- /**//**//**//** ** ======================================== ** 类名:CLASS_FORMATER ** 功能:JS格式化 ** 示例: -------------------------------------------------------------------- var xx = new CLASS_FORMATER(code); document.getElementById("display").innerHTML = xx.format(); ** ======================================== **/ function CLASS_FORMAT(code){ //哈希表类 function Hashtable(){ this._hash = new Object(); this.add = function(key,value){ if(typeof(key)!="undefined"){ if(this.contains(key)==false){ this._hash[key]=typeof(value)=="undefined"?null:value; return true; } else { return false; } } else { return false; } } this.remove = function(key){delete this._hash[key];} this.count = function(){var i=0;for(var k in this._hash){i++;} return i;} this.items = function(key){return this._hash[key];} this.contains = function(key){return typeof(this._hash[key])!="undefined";} this.clear = function(){for(var k in this._hash){delete this._hash[k];}} } this._caseSensitive = true; //字符串转换为哈希表 this.str2hashtable = function(key,cs){ var _key = key.split(/,/g); var _hash = new Hashtable(); var _cs = true; if(typeof(cs)=="undefined"||cs==null){ _cs = this._caseSensitive; } else { _cs = cs; } for(var i in _key){ if(_cs){ _hash.add(_key[i]); } else { _hash.add((_key[i]+"").toLowerCase()); } } return _hash; } //获得需要转换的代码 this._codetxt = code; if(typeof(syntax)=="undefined"){ syntax = ""; } this._deleteComment = false; //是否大小写敏感 this._caseSensitive = true; //可以后面加块语句的关键字 this._blockElement = this.str2hashtable("switch,if,while,try,finally"); //是函数申明 this._function = this.str2hashtable("function"); //本行括号内分号不做换行 this._isFor = "for"; this._choiceElement = this.str2hashtable("else,catch"); this._beginBlock = "{"; this._endBlock = "}"; this._singleEyeElement = this.str2hashtable("var,new,return,else,delete,in,case"); //得到分割字符 this._wordDelimiters= " ,.?!;:\\/<>(){}[]\"'\r\n\t=+-|*%@#$^&"; //引用字符 this._quotation = this.str2hashtable("\",'"); //行注释字符 this._lineComment = "//"; //转义字符 this._escape = "\\"; //多行引用开始 this._commentOn = "/*"; //多行引用结束 this._commentOff = "*/"; //行结束词 this._rowEnd = ";"; this._in = "in"; this.isCompress = false; this.style = 0; this._tabNum = 0; this.format = function() { var codeArr = new Array(); var word_index = 0; var htmlTxt = new Array(); if(this.isCompress){ this._deleteComment = true; } //得到分割字符数组(分词) for (var i = 0; i < this._codetxt.length; i++) { if (this._wordDelimiters.indexOf(this._codetxt.charAt(i)) == -1) { //找不到关键字 if (codeArr[word_index] == null || typeof(codeArr[word_index]) == 'undefined') { codeArr[word_index] = ""; } codeArr[word_index] += this._codetxt.charAt(i); } else { if (typeof(codeArr[word_index]) != 'undefined' && codeArr[word_index].length > 0) word_index++; codeArr[word_index++] = this._codetxt.charAt(i); } } var quote_opened = false; //引用标记 var slash_star_comment_opened = false; //多行注释标记 var slash_slash_comment_opened = false; //单行注释标记 var line_num = 1; //行号 var quote_char = ""; //引用标记类型 var function_opened = false; var bracket_open = false; var for_open = false; //按分割字,分块显示 for (var i=0; i <=word_index; i++){ //处理空行(由于转义带来) if(typeof(codeArr[i])=="undefined"||codeArr[i].length==0){ continue; } else if(codeArr[i]==" "||codeArr[i]=="\t"){ if(slash_slash_comment_opened||slash_star_comment_opened){ if(!this._deleteComment){ htmlTxt[htmlTxt.length] = codeArr[i]; } } if(quote_opened){ htmlTxt[htmlTxt.length] = codeArr[i]; } } else if(codeArr[i]=="\n"){ //处理换行 } else if (codeArr[i] == "\r"){ slash_slash_comment_opened = false; quote_opened = false; line_num++; if(!this.isCompress){ htmlTxt[htmlTxt.length] = "\r\n"+ this.getIdent(); } //处理function里的参数标记 } else if (!slash_slash_comment_opened&&!slash_star_comment_opened && !quote_opened &&this.isFunction(codeArr[i])){ htmlTxt[htmlTxt.length] = codeArr[i] + " "; function_opened = true; } else if (!slash_slash_comment_opened&&!slash_star_comment_opened && !quote_opened &&codeArr[i]==this._isFor){ htmlTxt[htmlTxt.length] = codeArr[i]; for_open = true; } else if (!slash_slash_comment_opened&&!slash_star_comment_opened && !quote_opened &&codeArr[i]=="("){ bracket_open = true; htmlTxt[htmlTxt.length] = codeArr[i]; } else if (!slash_slash_comment_opened&&!slash_star_comment_opened && !quote_opened &&codeArr[i]==")"){ bracket_open = false; htmlTxt[htmlTxt.length] = codeArr[i]; } else if (!slash_slash_comment_opened&&!slash_star_comment_opened && !quote_opened &&codeArr[i]==this._rowEnd){ if(!this.isCompress){ if(!for_open){ if(i<word_index&&(codeArr[i+1]!="\r"&&codeArr[i+1]!="\n")){ htmlTxt[htmlTxt.length] = codeArr[i] + "\n" + this.getIdent(); }else{ htmlTxt[htmlTxt.length] = codeArr[i] + this.getIdent(); } }else{ htmlTxt[htmlTxt.length] = codeArr[i]; } }else{ htmlTxt[htmlTxt.length] = codeArr[i]; } } else if(!slash_slash_comment_opened&&!slash_star_comment_opened && !quote_opened &&codeArr[i]==this._beginBlock){ for_open = false; if(!this.isCompress){ switch(this.style){ case 0: this._tabNum++; htmlTxt[htmlTxt.length] = codeArr[i] + "\n" + this.getIdent(); break; case 1: htmlTxt[htmlTxt.length] = "\n" + this.getIdent(); this._tabNum++; htmlTxt[htmlTxt.length] = codeArr[i] + "\n"+ this.getIdent(); break; default: this._tabNum++; htmlTxt[htmlTxt.length] = codeArr[i]; break; } }else{ htmlTxt[htmlTxt.length] = codeArr[i]; } } else if(!slash_slash_comment_opened&&!slash_star_comment_opened && !quote_opened &&codeArr[i]==this._endBlock){ if(!this.isCompress){ this._tabNum--; if(i<word_index&&codeArr[i+1]!=this._rowEnd){ htmlTxt[htmlTxt.length] = "\n" + this.getIdent() + codeArr[i]; }else{ htmlTxt[htmlTxt.length] = "\n" + this.getIdent() + codeArr[i]; } }else{ if(i<word_index&&codeArr[i+1]!=this._rowEnd){ htmlTxt[htmlTxt.length] = codeArr[i] + this._rowEnd; }else{ htmlTxt[htmlTxt.length] = codeArr[i]; } } //处理关键字 } else if (!slash_slash_comment_opened&&!slash_star_comment_opened && !quote_opened && this.isBlockElement(codeArr[i])){ htmlTxt[htmlTxt.length] = codeArr[i]; //处理内置对象(后面加一个空格) } else if (!slash_slash_comment_opened&&!slash_star_comment_opened && !quote_opened && this.isSingleEyeElement(codeArr[i])){ if(codeArr[i]==this._in){ htmlTxt[htmlTxt.length] = " "; } htmlTxt[htmlTxt.length] = codeArr[i] + " "; //处理双引号(引号前不能为转义字符) } else if (!slash_star_comment_opened&&!slash_slash_comment_opened&&this._quotation.contains(codeArr[i])){ if (quote_opened){ //是相应的引号 if(quote_char==codeArr[i]){ htmlTxt[htmlTxt.length] = codeArr[i]; quote_opened = false; quote_char = ""; } else { htmlTxt[htmlTxt.length] = codeArr[i]; } } else { htmlTxt[htmlTxt.length] = codeArr[i]; quote_opened = true; quote_char = codeArr[i]; } //处理转义字符 } else if(codeArr[i] == this._escape){ htmlTxt[htmlTxt.length] = codeArr[i]; if(i<word_index-1){ if(codeArr[i+1].charCodeAt(0)>=32&&codeArr[i+1].charCodeAt(0)<=127){ htmlTxt[htmlTxt.length] = codeArr[i+1].substr(0,1); htmlTxt[htmlTxt.length] = codeArr[i+1].substr(1); i=i+1; } } //处理多行注释的开始 } else if (!slash_slash_comment_opened && !slash_star_comment_opened&&!quote_opened&&this.isStartWith(this._commentOn,codeArr,i)){ slash_star_comment_opened = true; if(!this._deleteComment){ htmlTxt[htmlTxt.length] = this._commentOn; } i = i + this.getSkipLength(this._commentOn); //处理单行注释 } else if (!slash_slash_comment_opened && !slash_star_comment_opened&&!quote_opened&&this.isStartWith(this._lineComment,codeArr,i)){ slash_slash_comment_opened = true; if(!this._deleteComment){ htmlTxt[htmlTxt.length] = this._lineComment; } i = i + this.getSkipLength(this._lineComment); //处理忽略词 } else if (!slash_slash_comment_opened && !slash_star_comment_opened&&!quote_opened&&this.isStartWith(this._ignore,codeArr,i)){ slash_slash_comment_opened = true; htmlTxt[htmlTxt.length] = this._ignore; i = i + this.getSkipLength(this._ignore); //处理多行注释结束 } else if (!quote_opened&&!slash_slash_comment_opened&&this.isStartWith(this._commentOff,codeArr,i)){ if (slash_star_comment_opened) { slash_star_comment_opened = false; if(!this._deleteComment){ htmlTxt[htmlTxt.length] = this._commentOff; } i = i + this.getSkipLength(this._commentOff); } } else { //不是在字符串中 if(!quote_opened){ //如果不是在注释重 if(!slash_slash_comment_opened && !slash_star_comment_opened){ htmlTxt[htmlTxt.length] = codeArr[i]; //注释中 }else{ if(!this._deleteComment){ htmlTxt[htmlTxt.length] = codeArr[i]; } } }else{ htmlTxt[htmlTxt.length] = codeArr[i]; } } } return htmlTxt.join(""); } this.isStartWith = function(str,code,index){ if(typeof(str)!="undefined"&&str.length>0){ var cc = new Array(); for(var i=index;i<index+str.length;i++){ cc[cc.length] = code[i]; } var c = cc.join(""); if(this._caseSensitive){ if(str.length>=code[index].length&&c.indexOf(str)==0){ return true; } }else{ if(str.length>=code[index].length&&c.toLowerCase().indexOf(str.toLowerCase())==0){ return true; } } return false; } else { return false; } } this.isFunction = function(val){ return this._function.contains(this._caseSensitive?val:val.toLowerCase()); } this.isBlockElement = function(val) { return this._blockElement.contains(this._caseSensitive?val:val.toLowerCase()); } this.isChoiceElement = function(val) { return this._choiceElement.contains(this._caseSensitive?val:val.toLowerCase()); } this.isSingleEyeElement = function(val) { return this._singleEyeElement.contains(this._caseSensitive?val:val.toLowerCase()); } this.isNextElement = function(from,word){ for(var i=from;i<word.length;i++){ if(word[i]!=" "&&word[i]!="\t"&&word[i]!="\r"&&word[i]!="\n"){ return this.isChoiceElement(word[i]); } } return false; } this.getSkipLength = function(val){ var count = 0; for(var i=0;i<val.length;i++){ if(this._wordDelimiters.indexOf(val.charAt(i))>=0){ count++; } } if(count>0){ count=count-1; } return count; } this.getIdent=function(){ var n = []; for(var i=0;i<this._tabNum;i++){ n[n.length] = "\t"; } return n.join(""); } } function doformat(o){ var htmltxt = ""; if (o == null){ alert("domNode is null!"); return; } var _codetxt = ""; if(typeof(o)=="object"){ switch(o.tagName){ case "TEXTAREA": case "INPUT": _codetxt = o.value; break; case "DIV": case "SPAN": _codetxt = o.innerText; break; default: _codetxt = o.innerHTML; break; } }else{ _codetxt = o; } var _syn = new CLASS_FORMAT(_codetxt); htmltxt = _syn.format(); return htmltxt; } function go() { var code = document.getElementById("code").value; var xx = new CLASS_FORMAT(code); var a = new Date(); if(document.getElementById('cboOperate').selectedIndex==1){ xx.isCompress=true; }else{ xx.style = parseInt(document.getElementById('cboStyle').value); } document.getElementById("display").value = xx.format(); alert("共花:" + (new Date().getTime()-a.getTime()) + "ms"); } //--> </SCRIPT> <TEXTAREA id=code rows=12 cols=100> /* 这个是一个类 */ function xx (num,str){//说明 var a = num;this.aa = a; this.bb = function(){alert(str);} this.cc = function(){for(var i=0;i<10;i++){document.title=i;}}}; xx.prototype.dd= function(){alert("d d kd");} var a = new xx(100,"hello"),b=new xx(0,"ttyp"); if(1>2) { alert(); } else { alert(" hell "); } a.bb(); b.dd(); alert(a.aa); </TEXTAREA> <BR> <select id="cboOperate" onchange="if(this.selectedIndex==1)document.getElementById('cboStyle').disabled=true;else document.getElementById('cboStyle').disabled=false;"> <option value="0">格式化</option> <option value="1">压缩</option> </select> <select id="cboStyle"> <option value="0">经典</option> <option value="1">微软</option> </select> <INPUT onclick=go() type=button value=go><br> <textarea id=display rows=12 cols=100> </textarea> </BODY></HTML>
前一页:
复制信息给好友代码
后一页:
web版的js正则工具
相关阅读
走四方旅行社
格式化金钱如果为0增加两个小数点
javascript时间显示01
kiss草原旅游网站
浅论网页优化和网站优化的方式
一个非常适和div+css初学者看的例子,看完之后,相信你的DIV+CSS技术一定会上一个层次
用css做的英文首字母大写和英文全都大写通过各个浏览器
酷在旅途
更多信息>>
栏目类别选择
百度小程序开发
微信小程序开发
微信公众号开发
uni-app
asp函数库
ASP
DIV+CSS
HTML
python
更多>>
同类信息
javascript_vb_asp代码转换器
可以生成跟QQ菜单一样的生成器
13种样式检测QQ是否在线的代码
复制信息给好友代码
JS压缩
web版的js正则工具
更多>>
最新添加文章
dw里面查找替换使用正则删除sqlserver里面的CONSTRAINT
Android移动端自动化测试:使用UIAutomatorViewer与Selenium定位元素
抖音直播音挂载小雪花 懂车帝小程序
javascript获取浏览器指纹可以用来做投票
火狐Mozilla Firefox出现:无法载入您的Firefox配置文件 它可能已经丢失 或是无法访问 问题解决集合处理办法
在Android、iOS、Windows、MacOS中微信小程序的文件存放路径
python通过代码修改pip下载源让下载库飞起
python里面requests.post返回的res.text还有其它的吗
更多>>
随机抽取信息
网站管理后台
使网页右键失效
改善用户体验之checkbox表单(最多可以选择三个)
连云港看网
在网页上禁止鼠标右键的方法(1)
Google的265导航站上顶部右边的logo上的眼珠特效 (兼容IE,FF)
更多标签
热门标签
快捷
展开
滑动
眼睛
ResponseXML
下拉框
执行
经典
mop
jpg
blog
option
考试
菜单
自动隐藏
层
控制
字节数
超出
深山行者V1.2旅行社网站管理系统
ctrl
alert
web2.0
后台
ewebeditor
旅游
随机
青春
文件大小
参数
静态
display
div的高度
ie6
站长
SEO
文件
复制
msn
DIV CSS做的透明菜单兼容IE、FF等
插件
生成
焦点
缩放
判断
组件
Cookie
酷
清除
outerHTML
免责声明:本站所有资料信息,有部分为本人原创,部分为从网络收集而来,仅供网友查看阅读所用,所有信息版权归信息所有人或所有公司所有
如果信息内容侵犯到您的版权或权益请与我们联系,经确认后我们会立即移除相关内容或链接
Copyright © 2007-2026
深山工作室
All Rights Reserved
服务QQ:
565449214
手机:
13961347334
ICP备案:
苏ICP备15019627号
苏公网安备 32070502010230号