gpt4 book ai didi

jquery - statechange 加载导致同一页面多次加载

转载 作者:行者123 更新时间:2023-12-03 22:42:04 26 4
gpt4 key购买 nike

看来 statechange 事件中的这一行:

$('#content').load(State.data.home_page);

...导致同一页面加载多次,从而导致我的网站出现故障。我可以做什么来解决这个问题?

enter image description here

(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 行,假设这是罪魁祸首。

最佳答案

当您单击该链接时,将按顺序发生以下操作:

  1. 将新状态插入堆栈
  2. 触发状态更改事件
  3. 该事件启动 data.home_page 的加载
  4. loadHome 被调用
  5. loadHome 启动加载

如您所见,步骤 3 和 5 是多余的。

您可以改为绑定(bind)到 popstate 事件吗?

关于jquery - statechange 加载导致同一页面多次加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28247578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com