forked from devote/HTML5-History-API
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhistory.iegte8.min.js
More file actions
28 lines (28 loc) · 6.59 KB
/
history.iegte8.min.js
File metadata and controls
28 lines (28 loc) · 6.59 KB
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
28
/*!
* History API JavaScript Library v4.1.2
*
* Support: IE8+, FF3+, Opera 9+, Safari, Chrome and other
*
* Copyright 2011-2014, 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: 2014-04-29 15:30
*/
(function(e){var i=!0,j=null,n=!1;function D(){}function k(a,b,c){if(a!=j&&""!==a&&!b)var b=k(),c=b.d,d=b.h,a=""+a,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.replace(/:.*$|$/,":")+"//"+f.host+l.basepath+a.replace(RegExp("^#[/]?(?:"+l.type+")?"),"");I.href=a;var a=/(?:([\w0-9]+:))?(?:\/\/(?:[^@]*@)?([^\/:\?#]+)(?::([0-9]+))?)?([^\?#]*)(?:(\?[^#]+)|\?)?(?:(#.*))?/.exec(I.href),b=
a[2]+(a[3]?":"+a[3]:""),c=a[4]||"/",d=a[5]||"",e="#"===a[6]?"":a[6]||"",g=c+d+e,h=c.replace(RegExp("^"+l.basepath,"i"),l.type)+d;return{b:a[1]+"//"+b+g,h:a[1],g:b,i:a[2],k:a[3]||"",d:c,e:d,a:e,c:g,j:h,f:h+e}}function W(){var a;try{a=e.sessionStorage,a.setItem(x+"t","1"),a.removeItem(x+"t")}catch(b){a={getItem:function(a){a=g.cookie.split(a+"=");return 1<a.length&&a.pop().split(";").shift()||"null"},setItem:function(a){var b={};if(b[f.href]=h.state)g.cookie=a+"="+y.stringify(b)}}}try{m=y.parse(a.getItem(x))||
{}}catch(c){m={}}o(r+"unload",function(){a.setItem(x,y.stringify(m))},n)}function z(a,b,c,d){var c=c||{set:D},f=!c.set,g=!c.get,h={configurable:i,set:function(){f=1},get:function(){g=1}};try{u(a,b,h),a[b]=a[b],u(a,b,c)}catch(k){}if(!f||!g)if(a.__defineGetter__&&(a.__defineGetter__(b,h.get),a.__defineSetter__(b,h.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"),
e.execScript("var "+b+";","JavaScript");else try{u(a,b,{value:D})}catch(q){}a[b]=l}else if(!f||!g)try{try{var m=E.create(a);u(E.getPrototypeOf(m)===a?m:a,b,c);for(var o in a)"function"===typeof a[o]&&(m[o]=a[o].bind(a));try{d.call(m,m,a)}catch(r){}a=m}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 Y(a,b,c){a in s?s[a].push(b):3<arguments.length?o(a,b,c,
arguments[3]):o(a,b,c)}function Z(a,b,c){var d=s[a];if(d)for(a=d.length;--a;){if(d[a]===b){d.splice(a,1);break}}else K(a,b,c)}function A(a,b){var c=(""+("string"===typeof a?a:a.type)).replace(/^on/,""),d=s[c];if(d){b="string"===typeof a?b:a;if(b.target==j)for(var f=["target","currentTarget","srcElement","type"];a=f.pop();)b=z(b,a,{get:"type"===a?function(){return c}:function(){return e}});(("popstate"===c?e.onpopstate:e.onhashchange)||D).call(e,b);for(var f=0,g=d.length;f<g;f++)d[f].call(e,b);return i}return $(a,
b)}function L(){var a=g.createEvent?g.createEvent("Event"):g.createEventObject();a.initEvent?a.initEvent("popstate",n,n):a.type="popstate";a.state=h.state;A(a)}function v(a,b,c,d){p||(b=k(b),b.c!==k().c&&(w=d,c?f.replace("#"+b.f):f.hash=b.f));!B&&a&&(m[f.href]=a);C=n}function M(a){var b=w;w=f.href;if(b){N!==f.href&&L();var a=a||e.event,b=k(w,i),c=k();a.oldURL||(a.oldURL=b.b,a.newURL=c.b);b.a!==c.a&&A(a)}}function O(a){setTimeout(function(){o("popstate",function(a){N=f.href;B||(a=z(a,"state",{get:function(){return h.state}}));
A(a)},n)},0);!p&&(a!==i&&h.location)&&(P(h.location.hash),C&&(C=n,L()))}function aa(a){var a=a||e.event,b;a:{for(b=a.target||a.srcElement;b;){if("A"===b.nodeName)break a;b=b.parentNode}b=void 0}var c="defaultPrevented"in a?a.defaultPrevented:a.returnValue===n;b&&("A"===b.nodeName&&!c)&&(c=k(),b=k(b.getAttribute("href",2)),c.b.split("#").shift()===b.b.split("#").shift()&&b.a&&(c.a!==b.a&&(h.location.hash=b.a),P(b.a),a.preventDefault?a.preventDefault():a.returnValue=n))}function P(a){var b=g.getElementById(a=
(a||"").replace(/^#/,""));b&&(b.id===a&&"A"===b.nodeName)&&(a=b.getBoundingClientRect(),e.scrollTo(F.scrollLeft||0,a.top+(F.scrollTop||0)-(F.clientTop||0)))}function ba(){var a=g.getElementsByTagName("script"),a=(a[a.length-1]||{}).src||"";(-1!==a.indexOf("?")?a.split("?").pop():"").replace(/(\w+)(?:=([^&]*))?/g,function(a,b,c){l[b]=(c||("basepath"===b?"/":"")).replace(/^(0|false)$/,"")});o(r+"hashchange",M,n);var b=[J,Q,ca,e,R,h];B&&delete R.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(!z(b[c+1],d,a,function(a,d){if(d===h)e.history=h=b[c+1]=a}))return K(r+"hashchange",M,n),n;b[c+1]===e&&(s[d]=s[d.substr(2)]=[])}l.redirect&&h.redirect();!B&&y&&W();if(!p)g[G](r+"click",aa,n);"complete"===g.readyState?O(i):(!p&&k().c!==l.basepath&&(C=i),o(r+"load",O,n));return i}if(e.history){var g=e.document,F=g.documentElement,E=e.Object,y=e.JSON,f=e.location,q=e.history,h=q,H=q.pushState,S=q.replaceState,p=!!H,B="state"in q,u=E.defineProperty,
Q=z({},"t")?{}:g.createElement("a"),r="",G=e.addEventListener?"addEventListener":(r="on")&&"attachEvent",T=e.removeEventListener?"removeEventListener":"detachEvent",U=e.dispatchEvent?"dispatchEvent":"fireEvent",o=e[G],K=e[T],$=e[U],l={basepath:"/",redirect:0,type:"/"},x="__historyAPI__",I=g.createElement("a"),w=f.href,N="",C=n,m={},s={},t=g.title,ca={onhashchange:j,onpopstate:j},V=function(a,b){var c=e.history!==q;c&&(e.history=q);a.apply(q,b);c&&(e.history=h)},R={redirect:function(a,b){l.basepath=
b=b==j?l.basepath:b;l.type=a=a==j?l.type:a;if(e.top==e.self){var c=k(j,n,i).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){var d=g.title;t!=j&&(g.title=t);H&&V(H,arguments);v(a,c);g.title=d;t=b},replaceState:function(a,b,c){var d=g.title;t!=j&&(g.title=t);delete m[f.href];S&&V(S,arguments);
v(a,c,i);g.title=d;t=b},location:{set:function(a){e.location=a},get:function(){return p?f:Q}},state:{get:function(){return m[f.href]||j}}},J={assign:function(a){0===(""+a).indexOf("#")?v(j,a):f.assign(a)},reload:function(){f.reload()},replace:function(a){0===(""+a).indexOf("#")?v(j,a,i):f.replace(a)},toString:function(){return this.href},href:{get:function(){return k().b}},protocol:j,host:j,hostname:j,port:j,pathname:{get:function(){return k().d}},search:{get:function(){return k().e}},hash:{set:function(a){v(j,
(""+a).replace(/^(#|)/,"#"),n,w)},get:function(){return k().a}}};ba()&&(h.emulate=!p,e[G]=Y,e[T]=Z,e[U]=A)}})(window);