历史记录事件在使用 mootools 加载页面时触发

History event is triggered on the page load with mootools

本文关键字:加载 mootools 事件 记录 历史      更新时间:2023-09-26

我在历史记录管理方面遇到问题,在 safari 上实现 (http://mootools.net/forge/p/history)(所有版本)和旧版本的 chrome 历史记录更改事件在页面加载时触发,请检查控制台消息"历史记录更改":http://codepen.io/anon/pen/ByNRyy

var history_url_handler = function(url){
    console.log('history change');
};
History.addEvent('change', history_url_handler);

火狐和最新版本的chrome没有问题,建议?谢谢

如果我

没记错的话,这可能是旧 chrome(很可能是 webkit)中的一个奇怪/错误,其中页面加载触发了onhashchange事件。

如果我没记错的话,如果您加载提供初始哈希的页面,这不应该触发 onhashchange,但即使这样做,您也可以检查初始哈希是否是您给出的哈希值,并在这种情况下丢弃事件回调;如果您期望在加载时没有哈希,则这样的检查应该可以工作:

   if (location.hash.trim() === '') return;

您也可以通过保留如下引用来仅跳过第一个回调:

var history_url_handler = (function(){ 
  var firstCall = true; 
  return function(url){
    if (firstCall && location.hash.trim() === '') return;
    firstCall = false;
    console.log('history change');
  };
})()