/
history.iegte8.min.js
27 lines (27 loc) · 6.18 KB
/
history.iegte8.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
* History API JavaScript Library v4.0.2
*
* Support: IE8+, FF3+, Opera 9+, Safari, Chrome and other
*
* Copyright 2011-2013, Dmitrii Pakhtinov ( spb.piksel@gmail.com )
*
* http://spb-piksel.ru/
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Update: 16.07.13 00:47
*/
(function(e){var h=!0,j=null,n=!1;function C(){}function i(a,b,c){if(a&&!b)var b=i(),c=b.d,d=b.h,a=/^(?:[\w0-9]+\:)?\/\//.test(a)?0===a.indexOf("/")?d+a:a:d+"//"+b.g+(0===a.indexOf("/")?a:0===a.indexOf("?")?c+a:0===a.indexOf("#")?c+b.e+a:c.replace(/[^\/]+$/g,"")+a);else if(a=b?a:f.href,!p||c)a=a.replace(/^[^#]*/,"")||"#",a=f.protocol+"//"+f.host+m.basepath+a.replace(RegExp("^#[/]?(?:"+m.type+")?"),"");H.href=a;var a=/(?:([\w0-9]+:))?(?:\/\/(?:[^@]*@)?([^\/:\?#]+)(?::([0-9]+))?)?([^\?#]*)(?:(\?[^#]+)|\?)?(?:(#.*))?/.exec(H.href),b=
a[2]+(a[3]?":"+a[3]:""),c=a[4]||"/",d=a[5]||"",e="#"===a[6]?"":a[6]||"",I=c+d+e,g=c.replace(RegExp("^"+m.basepath,"i"),m.type)+d;return{b:a[1]+"//"+b+I,h:a[1],g:b,i:a[2],k:a[3]||"",d:c,e:d,a:e,c:I,j:g,f:g+e}}function W(a){var b="";if(w)b+=w.getItem(x);else{var c=g.cookie.split(x+"=");1<c.length&&(b+=c.pop().split(";").shift()||"null")}try{q=a.parse(b)||{}}catch(d){q={}}k(o+"unload",function(){if(w)w.setItem(x,a.stringify(q));else{var b={};if(b[f.href]=l.state)g.cookie=x+"="+a.stringify(b)}},n)}function y(a,
b,c,d){var c=c||{set:C},f=!c.set,g=!c.get,i={configurable:h,set:function(){f=1},get:function(){g=1}};try{u(a,b,i),a[b]=a[b],u(a,b,c)}catch(m){}if(!f||!g)if(a.__defineGetter__&&(a.__defineGetter__(b,i.get),a.__defineSetter__(b,i.set),a[b]=a[b],c.get&&a.__defineGetter__(b,c.get),c.set&&a.__defineSetter__(b,c.set)),(!f||!g)&&a===e){try{var l=a[b];a[b]=j}catch(p){}if("execScript"in e)e.execScript("Public "+b,"VBScript");else try{u(a,b,{value:C})}catch(q){}a[b]=l}else if(!f||!g)try{try{var k=D.create(a);
u(D.getPrototypeOf(k)===a?k:a,b,c);for(var o in a)"function"===typeof a[o]&&(k[o]=a[o].bind(a));try{d.call(k,k,a)}catch(r){}a=k}catch(s){u(a.constructor.prototype,b,c)}}catch(t){return n}return a}function X(a,b,c){c=c||{};a=a===J?f:a;c.set=c.set||function(c){a[b]=c};c.get=c.get||function(){return a[b]};return c}function z(a,b){var c=(""+("string"===typeof a?a:a.type)).replace(/^on/,""),d=r[c];if(d){b="string"===typeof a?b:a;if(b.target==j)for(var f=["target","currentTarget","srcElement","type"];a=
f.pop();)b=y(b,a,{get:"type"===a?function(){return c}:function(){return e}});(("popstate"===c?e.onpopstate:e.onhashchange)||C).call(e,b);for(var f=0,g=d.length;f<g;f++)d[f].call(e,b);return h}return Y(a,b)}function K(){var a=g.createEvent?g.createEvent("Event"):g.createEventObject();a.initEvent?a.initEvent("popstate",n,n):a.type="popstate";a.state=l.state;z(a)}function t(a,b,c,d){p||(b=i(b),b.c!==i().c&&(v=d,c?f.replace("#"+b.f):f.hash=b.f));!A&&a&&(q[f.href]=a);B=n}function L(a){if(v){M!==f.href&&
K();var a=a||e.event,b=i(v,h),c=i();a.oldURL||(a.oldURL=b.b,a.newURL=c.b);b.a!==c.a&&z(a)}v=f.href}function N(a){setTimeout(function(){k("popstate",function(a){M=f.href;A||(a=y(a,"state",{get:function(){return l.state}}));z(a)},n)},0);!p&&a!==h&&l.location&&(O(l.location.hash),B&&(B=n,K()))}function Z(a){var a=a||e.event,b=a.target||a.srcElement,c="defaultPrevented"in a?a.defaultPrevented:a.returnValue===n;b&&"A"===b.nodeName&&!c&&(c=i(),b=i(b.getAttribute("href",2)),c.b.split("#").shift()===b.b.split("#").shift()&&
(c.a!==b.a&&(l.location.hash=b.a),O(b.a),a.preventDefault?a.preventDefault():a.returnValue=n))}function O(a){var b=g.getElementById(a=(a||"").replace(/^#/,""));b&&b.id===a&&"A"===b.nodeName&&(a=b.getBoundingClientRect(),e.scrollTo(E.scrollLeft||0,a.top+(E.scrollTop||0)-(E.clientTop||0)))}if(e.history){var g=e.document,E=g.documentElement,w=e.sessionStorage,D=e.Object,P=e.JSON,f=e.location,s=e.history,l=s,F=s.pushState,Q=s.replaceState,p=!!F,A="state"in s,u=D.defineProperty,R=y({},"t")?{}:g.createElement("a"),
o="",G=e.addEventListener?"addEventListener":(o="on")&&"attachEvent",S=e.removeEventListener?"removeEventListener":"detachEvent",T=e.dispatchEvent?"dispatchEvent":"fireEvent",k=e[G],U=e[S],Y=e[T],m={basepath:"/",redirect:0,type:"/"},x="__historyAPI__",H=g.createElement("a"),v=f.href,M="",B=n,q={},r={},$={onhashchange:j,onpopstate:j},V={redirect:function(a,b){m.basepath=b=b==j?m.basepath:b;m.type=a=a==j?m.type:a;if(e.top==e.self){var c=i(j,n,h).c,d=f.pathname+f.search;p?(d=d.replace(/([^\/])$/,"$1/"),
c!=b&&RegExp("^"+b+"$","i").test(d)&&f.replace(c)):d!=b&&(d=d.replace(/([^\/])\?/,"$1/?"),RegExp("^"+b,"i").test(d)&&f.replace(b+"#"+d.replace(RegExp("^"+b,"i"),a)+f.hash))}},pushState:function(a,b,c){F&&F.apply(s,arguments);t(a,c)},replaceState:function(a,b,c){delete q[f.href];Q&&Q.apply(s,arguments);t(a,c,h)},location:{set:function(a){e.location=a},get:function(){return p?f:R}},state:{get:function(){return q[f.href]||j}}},J={assign:function(a){0===(""+a).indexOf("#")?t(j,a):f.assign(a)},reload:function(){f.reload()},
replace:function(a){0===(""+a).indexOf("#")?t(j,a,h):f.replace(a)},toString:function(){return this.href},href:{get:function(){return i().b}},protocol:j,host:j,hostname:j,port:j,pathname:{get:function(){return i().d}},search:{get:function(){return i().e}},hash:{set:function(a){t(j,(""+a).replace(/^(#|)/,"#"),n,v)},get:function(){return i().a}}};(function(){var a=g.getElementsByTagName("script"),a=(a[a.length-1]||{}).src||"";(-1!==a.indexOf("?")?a.split("?").pop():"").replace(/(\w+)(?:=([^&]*))?/g,
function(a,b,c){m[b]=(c||("basepath"===b?"/":"")).replace(/^(0|false)$/,"")});k(o+"hashchange",L,n);var b=[J,R,$,e,V,l];A&&delete V.state;for(var c=0;c<b.length;c+=2)for(var d in b[c])if(b[c].hasOwnProperty(d))if("function"===typeof b[c][d])b[c+1][d]=b[c][d];else{a=X(b[c],d,b[c][d]);if(!y(b[c+1],d,a,function(a,d){if(d===l)e.history=l=b[c+1]=a}))return U(o+"hashchange",L,n),n;b[c+1]===e&&(r[d]=r[d.substr(2)]=[])}m.redirect&&l.redirect();!A&&P&&W(P);if(!p)g[G](o+"click",Z,n);"complete"===g.readyState?
N(h):(!p&&i().c!==m.basepath&&(B=h),k(o+"load",N,n));return h})()&&(l.emulate=!p,e[G]=function(a,b,c){a in r?r[a].push(b):3<arguments.length?k(a,b,c,arguments[3]):k(a,b,c)},e[S]=function(a,b,c){var d=r[a];if(d)for(a=d.length;--a;){if(d[a]===b){d.splice(a,1);break}}else U(a,b,c)},e[T]=z)}})(window);