mirror of
https://github.com/jquery/jquery-ui.git
synced 2025-01-07 20:34:24 +00:00
moved history plugin to 1.7
This commit is contained in:
parent
f2265bf9e6
commit
5bb45e13c6
112
ui/ui.history.js
112
ui/ui.history.js
@ -1,112 +0,0 @@
|
|||||||
/*
|
|
||||||
* jQuery UI History
|
|
||||||
*
|
|
||||||
* Copyright (c) 2008 Klaus Hartl (stilbuero.de)
|
|
||||||
* Dual licensed under the MIT (MIT-LICENSE.txt)
|
|
||||||
* and GPL (GPL-LICENSE.txt) licenses.
|
|
||||||
*
|
|
||||||
* http://docs.jquery.com/UI/History
|
|
||||||
*
|
|
||||||
* Depends:
|
|
||||||
* ui.core.js
|
|
||||||
*/
|
|
||||||
(function($) {
|
|
||||||
|
|
||||||
// TODO lazy loading singleton
|
|
||||||
$.ui.hmanager = new function() {
|
|
||||||
var states = {}, def = function() {};
|
|
||||||
|
|
||||||
var $window = $(window), hash = location.hash;
|
|
||||||
|
|
||||||
function getState() {
|
|
||||||
return hash.replace('#', '');
|
|
||||||
}
|
|
||||||
|
|
||||||
var iframe;
|
|
||||||
// var keepHistoryIn = iframe || window;
|
|
||||||
|
|
||||||
return {
|
|
||||||
|
|
||||||
enable: function() {
|
|
||||||
|
|
||||||
if ($.browser.msie && parseInt($.browser.version) < 8) {
|
|
||||||
$(function() {
|
|
||||||
// create hidden iframe for hash change tracking
|
|
||||||
iframe = $('<iframe id="ui-history-iframe" style="display: none;"></iframe>').
|
|
||||||
prependTo(document.body)[0];
|
|
||||||
|
|
||||||
// create initial history entry
|
|
||||||
iframe.contentWindow.document.open();
|
|
||||||
iframe.contentWindow.document.close();
|
|
||||||
|
|
||||||
if (getState())
|
|
||||||
iframe.contentWindow.document.location.hash = getState();
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$window.bind('hashchange', function(e) {
|
|
||||||
// Prevent IE 8 from fireing an event twice,
|
|
||||||
// one from true event, one from trigger...
|
|
||||||
if (!iframe && hash == location.hash || iframe && hash == iframe.contentWindow.document.location.hash)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if ($.browser.msie && parseInt($.browser.version) < 8) {
|
|
||||||
hash = iframe.contentWindow.document.location.hash;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
hash = location.hash;
|
|
||||||
|
|
||||||
if (getState())
|
|
||||||
states[getState()]();
|
|
||||||
else
|
|
||||||
// TODO invoke default
|
|
||||||
;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!($.browser.msie && parseInt($.browser.version) >= 8)) {
|
|
||||||
setInterval(
|
|
||||||
($.browser.msie ?
|
|
||||||
function() {
|
|
||||||
if (hash != iframe.contentWindow.document.location.hash)
|
|
||||||
$window.trigger('hashchange');
|
|
||||||
} :
|
|
||||||
function() {
|
|
||||||
if (hash != location.hash)
|
|
||||||
$window.trigger('hashchange');
|
|
||||||
else
|
|
||||||
// Do the history.length check hack for Safari 2
|
|
||||||
;
|
|
||||||
}
|
|
||||||
)
|
|
||||||
, 200
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
add: function(state, handler) {
|
|
||||||
states[state] = handler;
|
|
||||||
},
|
|
||||||
|
|
||||||
go: function(state) {
|
|
||||||
if (state) {
|
|
||||||
if ($.browser.msie && parseInt($.browser.version) < 8) {
|
|
||||||
iframe.contentWindow.document.open();
|
|
||||||
iframe.contentWindow.document.close();
|
|
||||||
iframe.contentWindow.document.location.hash = state;
|
|
||||||
}
|
|
||||||
location.hash = state;
|
|
||||||
$window.trigger('hashchange');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
console.log('TODO do default state');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
$.ui.history = function() {
|
|
||||||
var args = Array.prototype.slice.call(arguments, 1);
|
|
||||||
$.ui.hmanager[arguments[0]].apply($.ui.hmanager, args);
|
|
||||||
};
|
|
||||||
|
|
||||||
})(jQuery);
|
|
Loading…
Reference in New Issue
Block a user