我遇到历史管理问题,在safari(所有版本)上使用cpojer实现(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);
firefox和最新版本的Chrome没有问题,建议?感谢
答案 0 :(得分:2)
如果我没记错的话,这可能是旧版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');
};
})()