文档章节

网页压缩、解压

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 2097
阅读 5
收藏 0
点赞 0
评论 0
<html> <head> <title>Javascript Compressor</title> <meta http-equiv="Content-Type" content="text/html; charset=GB2312" /> <script type="text/javascript"> function ICommon(that){ if(that!=null){ that.inherit=Common.prototype.inherit; that.specialize=Common.prototype.specialize } return that }; ICommon.specialize=function(p,c){ if(!p)p={}; if(!c)c=p.constructor; if(c=={}.constructor) c=new Function("this.inherit()"); c.valueOf=new Function("return this"); c.valueOf.prototype=new this.valueOf; c.valueOf.prototype.specialize(p); c.prototype=new c.valueOf; c.valueOf.prototype.constructor=c.prototype.constructor=c; c.ancestor=this; c.specialize=arguments.callee; c.ancestorOf=this.ancestorOf; return c }; ICommon.valueOf=new Function("return this"); ICommon.valueOf.prototype={ constructor:ICommon,inherit:function(){ return arguments.callee.caller.ancestor.apply(this,arguments) },specialize:function(that){ if(this==this.constructor.prototype&&this.constructor.specialize){ return this.constructor.valueOf.prototype.specialize(that) } for(var i in that){ switch(i){ case"constructor":case"toString":case"valueOf":continue } if(typeof that[i]=="function"&&that[i]!=this[i]){ that[i].ancestor=this[i] } this[i]=that[i] } if(that.toString!=this.toString&&that.toString!={}.toString){ that.toString.ancestor=this.toString; this.toString=that.toString } return this } }; function Common(){}; this.Common=ICommon.specialize({ constructor:Common,toString:function(){ return"[common "+(this.constructor.className||"Object")+"]" },instanceOf:function(klass){ return this.constructor==klass||klass.ancestorOf(this.constructor) } }); Common.className="Common"; Common.ancestor=null; Common.ancestorOf=function(klass){ while(klass&&klass.ancestor!=this) klass=klass.ancestor; return Boolean(klass) }; Common.valueOf.ancestor=ICommon; function ParseMaster(){ var E=0,R=1,L=2; var G=/\(/g,S=/\$\d/,I=/^\$\d+$/,T=/(['"])\1\+(.*)\+\1\1$/,ES=/\\./g,Q=/'/,DE=/\x01[^\x01]*\x01/g; var self=this; this.add=function(e,r){ if(!r)r=""; var l=(_14(String(e)).match(G)||"").length+1; if(S.test(r)){ if(I.test(r)){ r=parseInt(r.slice(1))-1 }else{ var i=l; var q=Q.test(_14(r))?'"':"'"; while(i) r=r.split("$"+i--).join(q+"+a[o+"+i+"]+"+q); r=new Function("a,o","return"+q+r.replace(T,"$1")+q) } } _33(e||"/^$/",r,l) }; this.exec=function(s){ _3.length=0; return _30(_5(s,this.escapeChar).replace(new RegExp(_1,this.ignoreCase?"gi":"g"),_31),this.escapeChar).replace(DE,"") }; this.reset=function(){ _1.length=0}; var _3=[]; var _1=[]; var _32=function(){ return"("+String(this[E]).slice(1,-1)+")" }; _1.toString=function(){return this.join("|")}; function _33(){ arguments.toString=_32; _1[_1.length]=arguments } function _31(){ if(!arguments[0]) return""; var i=1,j=0,p; while(p=_1[j++]){ if(arguments[i]){ var r=p[R]; switch(typeof r){ case"function":return r(arguments,i); case"number":return arguments[r+i] } var d=(arguments[i].indexOf(self.escapeChar)==-1)?"":"\x01"+arguments[i]+"\x01"; return d+r }else i+=p[L] } }; function _5(s,e){return e?s.replace(new RegExp("\\"+e+"(.)","g"),function(m,c){ _3[_3.length]=c; return e }):s}; function _30(s,e){var i=0;return e?s.replace(new RegExp("\\"+e,"g"),function(){ return e+(_3[i++]||"")}):s }; function _14(s){return s.replace(ES,"")} }; ParseMaster.prototype={ constructor:ParseMaster,ignoreCase:false,escapeChar:"" }; if(/MSIE 5.0/.test(navigator.userAgent)) new function(){ var ap=function(f,o,a){f.apply(o,a)}; if(''.replace(/^/,String)){ var _28=String.prototype.replace; var _29=function(e,r){ var m,n="",s=this; while(s&&(m=e.exec(s))){ n+=s.slice(0,m.index)+ap(r,this,m); s=s.slice(m.lastIndex) } return n+s }; String.prototype.replace=function(e,r){ this.replace=(typeof r=="function")?_29:_28; return this.replace(e,r) } } if(!Function.apply){ var APPLY="apply-"+Number(new Date); ap=function(f,o,a){ var r; o[APPLY]=f; switch(a.length){ case 0:r=o[APPLY]();break; case 1:r=o[APPLY](a[0]);break; case 2:r=o[APPLY](a[0],a[1]);break; case 3:r=o[APPLY](a[0],a[1],a[2]);break; case 4:r=o[APPLY](a[0],a[1],a[2],a[3]);break; default:var aa=[],i=a.length-1;do aa[i]="a["+i+"]";while(i--);eval("r=o[APPLY]("+aa+")") } delete o[APPLY]; return r }; if(typeof ICommon=="function") ICommon.valueOf.prototype.inherit=function(){ return ap(arguments.callee.caller.ancestor,this,arguments) } } if(![].push) Array.prototype.push=function(){ for(var i=0;i<arguments.length;i++){ this[this.length]=arguments[i] } return this.length }; if(![].pop) Array.prototype.pop=function(){ var i=this[this.length-1]; this.length--; return i } }; function pack(_7,_0,_2,_8){ var I="$1";_7+="\n"; _0=Math.min(parseInt(_0),95); function _15(s){ var i,p; for(i=0;(p=_6[i]);i++){s=p(s)} return s }; var _25=function(p,a,c,k,e,d){ while(c--) if(k[c]) p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]); return p }; var _26=function(){ if(!''.replace(/^/,String)){ while(c--)d[e(c)]=k[c]||e(c); k=[function(e){return d[e]}]; e=function(){return'\\w+'}; c=1 } }; var _6=[]; function _4(p){ _6[_6.length]=p }; function _18(s){ var p=new ParseMaster; p.escapeChar="\\"; p.add(/'[^'\n\r]*'/,I); p.add(/"[^"\n\r]*"/,I); p.add(/\/\/[^\n\r]*[\n\r]/," "); p.add(/\/\*[^*]*\*+([^\/][^*]*\*+)*\//," "); p.add(/\s+(\/[^\/\n\r\*][^\/\n\r]*\/g?i?)/,"$2"); p.add(/[^\w\x24\/'"*)\?:]\/[^\/\n\r\*][^\/\n\r]*\/g?i?/,I); if(_8)p.add(/;;;[^\n\r]+[\n\r]/); p.add(/\(;;\)/,I); p.add(/;+\s*([};])/,"$2"); s=p.exec(s); p.add(/(\b|\x24)\s+(\b|\x24)/,"$2 $3"); p.add(/([+\-])\s+([+\-])/,"$2 $3"); p.add(/\s+/,""); return p.exec(s) }; function _17(s){ var p=new ParseMaster; p.add(/((\x24+)([a-zA-Z_]+))(\d*)/,function(m,o){ var l=m[o+2].length; var s=l-Math.max(l-m[o+3].length,0); return m[o+1].substr(s,l)+m[o+4] }); var r=/\b_[A-Za-z\d]\w*/; var k=_13(s,_9(r),_21); var e=k.e; p.add(r,function(m,o){return e[m[o]]}); return p.exec(s) }; function _16(s){ if(_0>62)s=_20(s); var p=new ParseMaster; var e=_12(_0); var r=(_0>62)?/\w\w+/ :/\w+/; k=_13(s,_9(r),e); var e=k.e; p.add(r,function(m,o){return e[m[o]]}); return s&&_27(p.exec(s),k) }; function _13(s,r,e){ var a=s.match(r); var so=[]; var en={}; var pr={}; if(a){ var u=[]; var p={}; var v={}; var c={}; var i=a.length,j=0,w; do{ w="$"+a[--i]; if(!c[w]){ c[w]=0; u[j]=w; p["$"+(v[j]=e(j))]=j++ } c[w]++ } while(i); i=u.length; do{ w=u[--i]; if(p[w]!=null){ so[p[w]]=w.slice(1); pr[p[w]]=true; c[w]=0 } } while(i); u.sort(function(m1,m2){return c[m2]-c[m1]}); j=0; do{ if(so[i]==null) so[i]=u[j++].slice(1); en[so[i]]=v[i] } while(++i<u.length) } return{s:so,e:en,p:pr} }; function _27(p,k){ var E=_10("e\\(c\\)","g"); p="'"+_5(p)+"'"; var a=Math.min(k.s.length,_0)||1; var c=k.s.length; for(var i in k.p) k.s[i]=""; k="'"+k.s.join("|")+"'.split('|')"; var e=_0>62?_11:_12(a); e=String(e).replace(/_0/g,"a").replace(/arguments\.callee/g,"e"); var i="c"+(a>10?".toString(a)":""); if(_2){ var d=_19(_26); if(_0>62)d=d.replace(/\\\\w/g,"[\\xa1-\\xff]"); else if(a<36)d=d.replace(E,i); if(!c)d=d.replace(_10("(c)\\s*=\\s*1"),"$1=0") } var u=String(_25); if(_2){ u=u.replace(/\{/,"{"+d+";") } u=u.replace(/"/g,"'"); if(_0>62){ u=u.replace(/'\\\\b'\s*\+|\+\s*'\\\\b'/g,"") } if(a>36||_0>62||_2){ u=u.replace(/\{/,"{e="+e+";") }else{ u=u.replace(E,i) } u=pack(u,0,false,true); var p=[p,a,c,k]; if(_2){ p=p.concat(0,"{}") } return"eval("+u+"("+p+"))\n" }; function _12(a){return a>10?a>36?a>62?_11:_22:_23:_24}; var _24=function(c){ return c }; var _23=function(c){ return c.toString(36) }; var _22=function(c){ return(c<_0?'':arguments.callee(parseInt(c/_0)))+((c=c%_0)>35?String.fromCharCode(c+29):c.toString(36)) }; var _11=function(c){ return(c<_0?'':arguments.callee(c/_0))+String.fromCharCode(c%_0+161) }; var _21=function(c){ return"_"+c }; function _5(s){ return s.replace(/([\\'])/g,"\\$1") }; function _20(s){ return s.replace(/[\xa1-\xff]/g,function(m){ return"\\x"+m.charCodeAt(0).toString(16) }) }; function _10(s,f){ return new RegExp(s.replace(/\$/g,"\\$"),f) }; function _19(f){ with(String(f))return slice(indexOf("{")+1,lastIndexOf("}")) }; function _9(r){ return new RegExp(String(r).slice(1,-1),"g") }; _4(_18); if(_8)_4(_17); if(_0)_4(_16); return _15(_7) }; var input,output; onload=function(){ if(!document.getElementById||''.replace(/^/,String))return; input=document.getElementById("input");//内容 文本区域 var message=document.getElementById("message");//消息 var encoding=document.getElementById("ascii-encoding");//编码方式 选择列表 值有0、10、62、95 var fastDecode=document.getElementById("fast-decode");//快速解码 选择框 var specialChars=document.getElementById("special-chars");//特殊字符 选择框 function packScript(){//执行压缩 try{ if(input.value){ input.value=pack(input.value,encoding.value,fastDecode.checked,specialChars.checked); //调用编码函数 输入代码, 编码方式, 是否快速解码, 是否特殊字符 } }catch(e){ reportError("error packing script",e.message) } }; function decodeScript(){//执行解码 try{ if(input.value.substring(0,27)=="eval(function(p,a,c,k,e,d){"){ eval("input.value=String"+input.value.slice(4)); } else reportError("代码解码取消","您的代码没有用此方法压缩!"); }catch(e){ reportError("代码解码错误",e.message) } }; function enableFastDecode(){ fastDecode.disabled=Boolean(encoding.value==0); fastDecode.parentNode.className=(encoding.value==0)?"disabled":"" }; function reportError(m,e){ message.innerHTML=m+(e?": "+e:""); message.className="error" }; encoding.onclick=enableFastDecode; var buttons=document.getElementsByTagName("button"); var button,i; for(i=0;(button=buttons[i]);i++){ var handler=eval(button.id); button.onclick=handler; handler.button=button } }; </script> </head> <body > <form id="packer" action="" method="post"> <label for="input">Paste your code:</label> <br /> <textarea id="input" name="input" rows="10" cols="79"></textarea> <div class="r ar"> <p id="controls"> <label for="ascii-encoding">Encoding:</label> <select id="ascii-encoding" name="ascii_encoding"> <option value="0">None</option> <option value="10">Numeric</option> <option value="62" selected="selected">Normal</option> <option value="95">High ASCII</option> </select><br /> <label for="fast-decode">Fast Decode: <input type="checkbox" id="fast-decode" name="fast_decode" value="1" checked="checked"/></label><br /> <label for="special-chars">Special Characters: <input type="checkbox" id="special-chars" name="special_chars" value="1"/></label> </p> </div> <button type="button" id="packScript">Compress</button> <button type="button" id="decodeScript" >Decode</button> <p id="message"></p> </form> </body> </html>
来自: http://www.cnblogs.com/szw/archive/2007/12/17/1003562.html

本文转载自:http://www.cnblogs.com/del/archive/2007/12/18/1004522.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
python urllib爬取网页编码问题

利用python urllib库爬取网页,有时获得的网页打印或写文件遇到编码问题,找了许久终于知道为什么了。 首先利用urlopen()函数获取网页对象,再利用info()函数打印网页的相关信息,确定网页的...

fjie
2016/04/28
0
0
ubuntu 安装 flash player 方法

下载Adobe Flash Player: 请从Adobe官方下载,也可以从这个URL下载,这个URL也是官方的链接: http://fpdownload.macromedia.com/get/flashplayer/pdc/11.2.202.235/installflashplayer11 l......

雨焰
2012/11/08
0
0
如何还原压缩的CSS/HTML/JS文件

如何还原压缩的CSS/HTML/JS文件 一,问题描述 我们经常在进入一家新的公司,或者网上下载一些源码后,拿到他们的CSS/HTML/JS文件都是经过压缩的,如图 随便啰嗦下,为什么人家要压缩,这是为...

fajor
2015/10/19
4.6K
0
WinRAR的自解压模式 - imsoft.cnblogs

一个SFX (SelF-eXtracting)自解压文件是压缩文件的一种,它结合了可执行文件模块,一种用以运行从压缩文件解压文件的模块。这样的压缩文件不需要外部程序来解压自解压文件的内容,它自己便可...

imzdx
2014/05/20
0
0
百度云下载的压缩吧损坏问题解决

有时用百度云下载压缩包回来之后会出现损坏不能解压的问题,比如: 1、使用网页的批量下载,此时百度云会压缩成一个包,格式为zip,而下载下载回来之后用WinRAR解压就会出现CRC校验的错误,不...

easonjim
2017/06/05
0
0
请教您怎么设置启动页面地址~!

@错II过 你好,想跟你请教个问题:我购买了个网页源代码rar压缩包在解压后可以请教您怎么设置启动页面地址~!拜托大哥指教

EVANo00o
2014/04/17
103
3
joomla第一单元第三节。备份与还原

akeeba backup用来备份,akeeba kickstart用来还原网站。 下载安装akeeba backup ,在《组件》当中选择akeeba,备份之前进行设置,包括:输出目录,备份文件格式, 压缩引擎选择《zip》格式。...

adustdu2015
2016/01/14
30
0
搭建LAMP平台

一、前言: 所谓LAMP,就是把linux系统,apache网站服务器,mysql数据库服务器,php或perl或python动态网页服务器结合起来,为互联网上的用户提供动静态网页的访问而架设的服务结构,真正实现...

jsaa
2014/03/23
0
0
Google宣布新开源压缩算法Brotli,将大大提高压缩速率

在最大压缩率下Zopfli输出的文件比zlib小3%到8%,Google认为Zopfli代表着目前最先进的Deflate兼容压缩算法,它采用C语言编写,便于移植。但Zopfli的缺陷是需要的CPU处理时间比 zlib高出2到3...

Foundation
2015/09/24
416
0
函数计算中使用 puppeteer.js

puppeteer.js github 地址:https://github.com/GoogleChrome/puppeteer API: https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md 函数计算文档:https://help.aliyun.com......

木香丘
06/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JEESZ分布式框架--单点登录集成方案

JEESZ分布式框架单点登录集成方案 第一节:单点登录简介 第一步:了解单点登录 SSO主要特点是: SSO应用之间使用Web协议(如HTTPS) ,并且只有一个登录入口. SSO的体系中有下面三种角色: 1) Us...

明理萝
7分钟前
0
1
【易错】一级缓存、二级缓存介绍与常见问题(四)

一般来说,可以在5个方面进行缓存的设计: 1.最底层可以配置的是mysql自带的query cache, 2.mybatis的一级缓存,默认情况下都处于开启状态,只能使用自带的PerpetualCache,无法配置第三方缓...

大白来袭
11分钟前
0
0
rancher安装kubernetes

参考https://rancher.com/quick-start/ 环境(必须相同。否则有很多问题): Ubuntu 16.04 Docker versions are 1.12.6, 1.13.1 or 17.03.2 1、docker安装https://docs.docker.com/install/l......

杰仪
11分钟前
0
0
几维安全Javascript代码混淆(js加密)在线使用说明

几维安全Javascript代码混淆是一项在线加密服务,用户只需将JS文件打包成zip包,提交到加密平台,即可完成代码混淆、字符串加密、属性加密、调用转换等多项保护措施,提高攻击者分析Javascr...

工作的事
14分钟前
1
0
解决dokuwiki创建中文词条文件乱码问题

若直接创建中文词条,打开本地文件夹\dokuwiki\data\pages你会发现,中文字段显示的是URL乱码,需要改一下utf8格式,方法如下:(linux系统亲测有效) 打开 .dokuwiki\conf\local.php 添加一行...

Rhymo-Wu
16分钟前
0
0
设置圆角长条progressbar背景色

1、首先在Drawable下面新建一个xml文件,将这段代码复制进去 <?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-......

王先森oO
16分钟前
0
0
Java语言学习(九):异常处理

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。常见的三种异常类型有: 检查性异常,如打开一个不存在的文件 运行时异常,如数组越界 错误,如栈溢出 ...

海岸线的曙光
20分钟前
0
0
深入分析golang多值返回以及闭包的实现

一、前言 golang有很多新颖的特性,不知道大家的使用的时候,有没想过,这些特性是如何实现的?当然你可能会说,不了解这些特性好像也不影响自己使用golang,你说的也有道理,但是,多了解底...

万建宁
20分钟前
0
0
img与background-image之间的区别

1.img <img src="图片来源" alt="图片无法显示时显示图片说明性文字" style="设置样式属性" /> img标签虽然不是块状元素,但是可以设置宽高,占位, img设置width后height会自适应匹配,如果...

爱喝水的小熊
22分钟前
0
0
Swift - 添加提示音

func createSound() { //建立的SystemSoundID对象 var soundID:SystemSoundID = 123 //获取声音地址 let path = Bundle.main.path(forResource: "3quan......

west_zll
24分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部