gpt4 book ai didi

jquery - 回到使用 ajax 的 PushState 条目

转载 作者:行者123 更新时间:2023-12-03 21:58:19 25 4
gpt4 key购买 nike

我遇到以下情况的问题。

  1. 用户访问网站
  2. 用户点击使用history.pushState更新url的链接
  3. 通过ajax加载部分页面内容(使用jQuery)
  4. 用户点击加载新页面的常规链接
  5. 用户点击“返回”返回到pushState条目
  6. 页面现在仅显示通过 ajax 检索的页面部分

我使用 PushState 增强了一个网站的各种功能,结果是一个响应速度惊人的 Web 应用程序,但这个问题阻止了我使用它。

这是代码示例:

$('a').live('click', function(){
history.pushState({}, '', this.href);
popstate(this.href);
return false;
});

popstate = function(url){
$('#content').load(url);
}
window.onpopstate = function(event){
popstate(window.location.href);
event.preventDefault();
}

注释:

  • 在 window.onpopstate 函数中放置警报时,第 5 步似乎未触发该事件。这是一个错误吗?
  • 此问题仅在使用 ajax 时出现。
  • 我必须分离 popstate 函数,以便我可以在 pushState 之后调用它。有没有办法手动触发window.onpopstate事件?

最佳答案

似乎有些浏览器经常混淆通过ajax加载的部分内容和用其布局装饰的整个页面。这是因为它们都有相同的 URL。因此,当用户单击后退按钮时,浏览器不会加载 URL,而只会显示之前通过 ajax 下载的部分内容。

为了避免这种情况并维护两个独立的内部缓存(一个用于部分页面,一个用于整个页面),您应该在通过 ajax 调用时在 URL 中添加 GET 参数。就像你的代码中这样:

popstate = function(url){
$('#content').load(url+'?_ajax=1');
}

希望这有帮助。

关于jquery - 回到使用 ajax 的 PushState 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6309477/

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