github.com/westcoastroms/westcoastroms-build@v0.0.0-20190928114312-2350e5a73030/build/make/tools/droiddoc/templates-pdk/assets/jquery-history.js (about)

     1  /**
     2   * jQuery history event v0.1
     3   * Copyright (c) 2008 Tom Rodenberg <tarodenberg gmail com>
     4   * Licensed under the GPL (http://www.gnu.org/licenses/gpl.html) license.
     5   */
     6  (function($) {
     7      var currentHash, previousNav, timer, hashTrim = /^.*#/;
     8  
     9      var msie = {
    10          iframe: null,
    11          getDoc: function() {
    12              return msie.iframe.contentWindow.document;
    13          },
    14          getHash: function() {
    15              return msie.getDoc().location.hash;
    16          },
    17          setHash: function(hash) {
    18              var d = msie.getDoc();
    19              d.open();
    20              d.close();
    21              d.location.hash = hash;
    22          }
    23      };
    24  
    25      var historycheck = function() {
    26          var hash = msie.iframe ? msie.getHash() : location.hash;
    27          if (hash != currentHash) {
    28              currentHash = hash;
    29              if (msie.iframe) {
    30                  location.hash = currentHash;
    31              }
    32              var current = $.history.getCurrent();
    33              $.event.trigger('history', [current, previousNav]);
    34              previousNav = current;
    35          }
    36      };
    37  
    38      $.history = {
    39          add: function(hash) {
    40              hash = '#' + hash.replace(hashTrim, '');
    41              if (currentHash != hash) {
    42                  var previous = $.history.getCurrent();
    43                  location.hash = currentHash = hash;
    44                  if (msie.iframe) {
    45                      msie.setHash(currentHash);
    46                  }
    47                  $.event.trigger('historyadd', [$.history.getCurrent(), previous]);
    48              }
    49              if (!timer) {
    50                  timer = setInterval(historycheck, 100);
    51              }
    52          },
    53          getCurrent: function() {
    54              if (currentHash) {
    55                return currentHash.replace(hashTrim, '');
    56              } else { 
    57                return ""; 
    58              }
    59          }
    60      };
    61  
    62      $.fn.history = function(fn) {
    63          $(this).bind('history', fn);
    64      };
    65  
    66      $.fn.historyadd = function(fn) {
    67          $(this).bind('historyadd', fn);
    68      };
    69  
    70      $(function() {
    71          currentHash = location.hash;
    72          if ($.browser.msie) {
    73              msie.iframe = $('<iframe style="display:none" src="javascript:false;"></iframe>').prependTo('body')[0];
    74              msie.setHash(currentHash);
    75              currentHash = msie.getHash();
    76          }
    77      });
    78  })(jQuery);