gpt4 book ai didi

javascript - 在 Chrome 中页面加载时的 Popstate

转载 作者:技术小花猫 更新时间:2023-10-29 11:28:39 26 4
gpt4 key购买 nike

我正在为我的网络应用程序使用 History API,但遇到一个问题。我调用 Ajax 来更新页面上的一些结果,并使用 history.pushState() 来更新浏览器的地址栏而无需重新加载页面。然后,当然,我使用 window.popstate 以便在单击后退按钮时恢复之前的状态。

这个问题是众所周知的——Chrome 和 Firefox 对待 popstate 事件的方式不同。虽然 Firefox 不会在第一次加载时启动它,但 Chrome 会。我想要 Firefox 风格,而不是在加载时触发事件,因为它只是在加载时使用完全相同的结果更新结果。除了使用 History.js 是否有解决方法?我不想使用它的原因是——它本身需要太多的 JS 库,而且由于我需要在 CMS 中实现它,而它已经有太多的 JS,所以我想尽量减少我放入其中的 JS .

所以,想知道是否有一种方法可以让 Chrome 在加载时不启动 popstate,或者,也许有人尝试使用 History.js,因为所有库都混在一个文件中.

最佳答案

在第 19 版的 Google Chrome 中,来自@spliter 的解决方案停止工作。正如@johnnymire 指出的那样,Chrome 19 中的 history.state 存在,但它是空的。

我的解决方法是将 window.history.state !== null 添加到检查状态是否存在于 window.history 中:

var popped = ('state' in window.history && window.history.state !== null), initialURL = location.href;

我在所有主流浏览器以及 Chrome 版本 19 和 18 中对其进行了测试。看起来它可以工作。

关于javascript - 在 Chrome 中页面加载时的 Popstate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6421769/

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