diff options
Diffstat (limited to 'tools/droiddoc/templates-pdk/assets/jquery-history.js')
-rw-r--r-- | tools/droiddoc/templates-pdk/assets/jquery-history.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/tools/droiddoc/templates-pdk/assets/jquery-history.js b/tools/droiddoc/templates-pdk/assets/jquery-history.js new file mode 100644 index 000000000..ef96ec39d --- /dev/null +++ b/tools/droiddoc/templates-pdk/assets/jquery-history.js @@ -0,0 +1,78 @@ +/** + * jQuery history event v0.1 + * Copyright (c) 2008 Tom Rodenberg <tarodenberg gmail com> + * Licensed under the GPL (http://www.gnu.org/licenses/gpl.html) license. + */ +(function($) { + var currentHash, previousNav, timer, hashTrim = /^.*#/; + + var msie = { + iframe: null, + getDoc: function() { + return msie.iframe.contentWindow.document; + }, + getHash: function() { + return msie.getDoc().location.hash; + }, + setHash: function(hash) { + var d = msie.getDoc(); + d.open(); + d.close(); + d.location.hash = hash; + } + }; + + var historycheck = function() { + var hash = msie.iframe ? msie.getHash() : location.hash; + if (hash != currentHash) { + currentHash = hash; + if (msie.iframe) { + location.hash = currentHash; + } + var current = $.history.getCurrent(); + $.event.trigger('history', [current, previousNav]); + previousNav = current; + } + }; + + $.history = { + add: function(hash) { + hash = '#' + hash.replace(hashTrim, ''); + if (currentHash != hash) { + var previous = $.history.getCurrent(); + location.hash = currentHash = hash; + if (msie.iframe) { + msie.setHash(currentHash); + } + $.event.trigger('historyadd', [$.history.getCurrent(), previous]); + } + if (!timer) { + timer = setInterval(historycheck, 100); + } + }, + getCurrent: function() { + if (currentHash) { + return currentHash.replace(hashTrim, ''); + } else { + return ""; + } + } + }; + + $.fn.history = function(fn) { + $(this).bind('history', fn); + }; + + $.fn.historyadd = function(fn) { + $(this).bind('historyadd', fn); + }; + + $(function() { + currentHash = location.hash; + if ($.browser.msie) { + msie.iframe = $('<iframe style="display:none" src="javascript:false;"></iframe>').prependTo('body')[0]; + msie.setHash(currentHash); + currentHash = msie.getHash(); + } + }); +})(jQuery); |