网站首页
关于深山
客户案例
业务范围
联系深山
网络投票系统
企业网站建设
旅行社网站建设
小程序
留言板
技术文章
许愿墙(qq爱墙)
技术首页
百度小程序开发
微信小程序开发
微信公众号开发
uni-app
asp函数库
ASP
asp.net
DIV+CSS
HTML
SEO搜索引擎忧化
下载类信息
个人空间
代码生成
电商
python
页面特效
表格特效
导航菜单
图形特效
表单特效
时间日期
色彩类别
链接特效
网页特效
系统硬件
网站公告
网页学习
技术类文章
网站类信息
订阅本栏目 RSS
您所在的位置:
深山工作室
>
代码生成
> 正文
JS压缩
网络 2009/4/25 10:56:54 深山行者 字体:
大
中
小
浏览 11064
以下为详细代码
<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正则工具
相关阅读
东莞理工班徽网络在线投票
相册列表显示模式
判断输入字符串中是否含有危险字符
东莞市潮流假期旅行社有限公司
昆山旅游网
长春海外旅行社
深山旅行社管理系统有后台测试吗?
北京泓源万国咨询服务有限公司
更多信息>>
栏目类别选择
百度小程序开发
微信小程序开发
微信公众号开发
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还有其它的吗
更多>>
随机抽取信息
ASP中控制输出字符串的长度
Web标准中XHTML的代码规范
爱度旅行网
asp中eof的介绍
微信小程序-接入广告
昌平欢乐之旅旅行社
更多标签
热门标签
document
淘宝
逗号
购物
select
创业
maryabbsby
网页
留言次数
万年历
split
屏幕
id
格式
教程
锚点
title
relative
文本框
weatherxml
轮流
统计
载入
背景色
正则
方法
flush
dl
复选框
滚动条
左 右
function
右键
alert
伪类
关闭
读取
关联
查询
绝对
利用position把div放在flash上
滑动
absolute
游戏
导出
DIV CSS做的透明菜单兼容IE、FF等
性能
time
固定
命名
免责声明:本站所有资料信息,有部分为本人原创,部分为从网络收集而来,仅供网友查看阅读所用,所有信息版权归信息所有人或所有公司所有
如果信息内容侵犯到您的版权或权益请与我们联系,经确认后我们会立即移除相关内容或链接
Copyright © 2007-2026
深山工作室
All Rights Reserved
服务QQ:
565449214
手机:
13961347334
ICP备案:
苏ICP备15019627号
苏公网安备 32070502010230号