JavaScript history.pushState/replaceState 为什么在频繁操作一段时间后就失效了呢?

线上demo如下所示:

https://codepen.io/weisiwu/pe...

图片描述

我想实现的是,根据滚动距离来修改页面的URL,但是发现使用 history api 去实现时,当到操作一段时间后就会出现

url不在变化的情况,请问有谁了解这个问题吗?还请赐教。

---- 补充

  1. 浏览器是:

clipboard.png

  1. 当我重新打开一个页面后,再返回就又可以刷新了
阅读 3.5k
2 个回答

https://bugs.chromium.org/p/c... 国外有个帖子说这个事情,会出现这种状况正是因为“频繁操作”,pushState也好、replaceState也好是很耗资源的,所以频繁操作一定次数后,浏览器处于安全考虑就不再响应,过一段时间后恢复正常。

我在浏览器上做了个测试
循环修改url,间隔0.1秒
修改100次,也就是10秒,URL就会停止变化
停止5秒后,URL继续变化
5秒内对URL做的更改都会生效
你的demo上的间隔大概是10秒

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题