%PDF- %PDF-
| Direktori : /proc/self/root/data/old/home/stash/atlassian-stash/static/bower/memoir.js/ |
| Current File : //proc/self/root/data/old/home/stash/atlassian-stash/static/bower/memoir.js/memoir.js |
(function(window, undefined) {
var nativeSupport = Boolean(typeof history !== 'undefined' && history.pushState && history.replaceState &&
!(
// These Regexes have been copied from history.js
(/ Mobile\/([1-7][a-z]|(8([abcde]|f(1[0-8]))))/i).test(navigator.userAgent) || /* disable for versions of iOS before version 4.3 (8F190) */
(/AppleWebKit\/5([0-2]|3[0-2])/i).test(navigator.userAgent) /* disable for the mercury iOS browser, or at least older versions of the webkit engine */
)),
memoir = function() {
return memoir.nativeSupport();
};
memoir.version = '0.1.1';
memoir.nativeSupport = function() {
return nativeSupport;
};
var eventListeners = {
'memoir.popstate' : [],
'memoir.changestate' : []
};
function trigger(eventName, event) {
for (var i = 0, listeners = eventListeners[eventName], l = listeners.length; i < l; i++) {
listeners[i](event);
}
}
var nativeMemoir = {
pushState : function(state, title, url) {
history.pushState(state, title || '', url || '');
trigger('memoir.changestate', { state : state });
},
replaceState : function(state, title, url) {
history.replaceState(state, title || '', url || '');
trigger('memoir.changestate', { state : state });
},
bind : function(eventName, callback) {
if (eventName in eventListeners) {
eventListeners[eventName].push(callback);
}
},
state : function() {
return history.state;
},
initialState : function(state) {
return history.replaceState(state, '', location.href);
}
};
var fallbackMemoir = {
pushState : function(state, title, url) {
if (url && location.href !== url) {
location.href = url;
}
},
replaceState : function(state, title, url) {
if (url && location.href !== url) {
location.href = url;
}
},
bind : function(eventName, callback) {},
initialState : function(state) {},
state : function() {
return null;
}
};
function extend(object, other) {
for (var key in other) {
if (other.hasOwnProperty(key)) {
object[key] = other[key];
}
}
}
extend(memoir, nativeSupport ? nativeMemoir : fallbackMemoir);
var originalOnpopstate = window.onpopstate,
popped = ('state' in history),
initialUrl = location.href;
window.onpopstate = function(event) {
// Always call original onpopstate
if (originalOnpopstate) {
originalOnpopstate.call(this, event);
}
// Ignore inital popstate that some browsers fire on page load
var initialPop = !popped && location.href == initialUrl;
popped = true;
if (!initialPop) {
trigger('memoir.popstate', event);
trigger('memoir.changestate', event);
}
};
if (typeof define !== 'undefined') {
define('memoir', [], function() { return memoir; });
} else {
var originalMemoir = window.memoir;
memoir.noConflict = originalMemoir ?
function() { window.memoir = originalMemoir; return memoir } :
function() { delete window.memoir; return memoir };
window.memoir = memoir;
}
})(window);