【发布时间】:2015-03-30 14:50:56
【问题描述】:
看来statechange 事件中的这一行:
$('#content').load(State.data.home_page);
...导致同一页面加载多次,从而导致我的网站出现故障。我该怎么做才能解决这个问题?
(function($) {
function loadHome() {
$('#content').load(site.url + '/ #primary', function() {
$(this).fadeIn(50);
});
}
// User event
$('.site-title a').on('click', function(e) {
e.preventDefault();
var newData = { home_page: site.url + '/ #primary' };
History.pushState(newData, site.title, site.url);
loadHome();
});
// History event
History.Adapter.bind(window, 'statechange', function(){
var State = History.getState();
$('#content').load(State.data.home_page);
});
})(jQuery);
更新
好的,所以我了解到.pushState 实际上调用了statechange。
所以基本上,我认为这就是正在发生的事情:
- 用户点击
.site-title a -
pushState()被调用,它调用statechange,它加载页面的一部分。 - 同时,
loadHome()也被调用,加载相同。
我知道这就是为什么我会获得同一页面的多个实例。我认为statechange 仅在用户单击浏览器上的后退按钮时才被调用。这样就可以解决问题了,但是我仍然不知道如何继续前进。我不确定在statechange 事件中用什么替换.load 行,假设这是罪魁祸首。
【问题讨论】:
-
您正在将一个事件处理程序绑定到另一个事件处理程序中。每次点击链接,都会重新添加一次
-
@charlietfl 谢谢,我修好了。但是,我现在有另一个问题。我用它更新了我的帖子。
标签: jquery ajax browser-history history.js html5-history