我发现chrome下点击浏览记录回退或者前进按钮有时候不能触发popstate事件.
比如我在A页面点击了一个h链接导致B页面加载了. 然后在按回退按钮, 此时A页面又被重新加载回来了.
B页面的加载会调用document.ready中的代码, 然后回退到A页面的时候同样调用了document.ready的代码. 问题是在document.ready中的popstate事件并没有被触发.
这在其他浏览器比如uc safari是会触发popstate的.
我发现chrome下点击浏览记录回退或者前进按钮有时候不能触发popstate事件.
比如我在A页面点击了一个h链接导致B页面加载了. 然后在按回退按钮, 此时A页面又被重新加载回来了.
B页面的加载会调用document.ready中的代码, 然后回退到A页面的时候同样调用了document.ready的代码. 问题是在document.ready中的popstate事件并没有被触发.
这在其他浏览器比如uc safari是会触发popstate的.
10 回答11.2k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
时隔三年我来回答这个问题。
结论:我也没找到解决的办法,安卓有个bug,苹果压根不适用。
但是:
Android-chrome:
当点击dom页面任何一个元素(alert不算),可以触发popstate监听。
Ios-chrome:
现象比较奇怪。
当下拉刷新页面一次,可以用popstate监听一次;
当下拉刷新页面两次,可以用popstate监听两次;
...以此类推
另外当下拉刷新两次以上,监听一次,点击dom页面任何一个元素(alert不算),可以继续监听;
一直循环刷新点击可以无限监听。