首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >哪些情况可能使浏览器返回上的window.history.state为空?

哪些情况可能使浏览器返回上的window.history.state为空?
EN

Stack Overflow用户
提问于 2016-03-10 18:48:44
回答 1查看 3.9K关注 0票数 2

我的网站查询字符串URL如下:

代码语言:javascript
运行
复制
?budget=0-&year=0-&kms=0-&so=-1&sc=-1&pn=1

当用户转到下一页时(从第1页到第2页):

  1. 我们解释了增量pn (页面号乘以1),并将其设置为查询字符串URL。 更改的查询字符串: ?预算=0-&年=0-&kms=0-&&so=-1&sc=-1&pn=2 我还存储了旧的查询字符串,它看起来如下: ?预算=0-&年=0-&kms=0-&&so=-1&sc=-1&pn=1
  2. 然后,我将两者都推到窗口历史记录中,以更改URL,并将前面的内容保存回浏览器: window.history.pushState(oldQS,null,newQS);
  3. 这样做之后,当我在page2上时,我会检查window.history.state。它存储了我以前的状态: ?预算=0-&年=0-&kms=0-&&so=-1&sc=-1&pn=1
  4. 我按page2的浏览器返回到page1。我放了一个断点: $(窗口).on(‘popstate’,函数(E){ console.log(e.originalEvent.state) }); e.originalEvent.statenull

意见:

  • window.history.state不是null,当我在page2上时存储正确的值。
  • 当我单击浏览器返回时,它将获得null值。

我到目前为止所做的事:

(没有起作用)

  • hashchange事件上放置断点,但没有帮助,因为URL中没有#。
  • 将断点放在我的Javascript代码(如pushState()replaceState() )上的每个pushState()函数上,但是当我按回浏览器时,没有一个会被击中。

我不知道还有哪些地方/函数可以将window.history.state更改为null

如何通过单击浏览器返回了解它是如何并在何处变为空的?

EN

Stack Overflow用户

发布于 2017-07-24 20:49:18

你问:

我不知道还需要查看哪些位置/函数可以将window.history.state更改为null。 如何通过单击浏览器返回了解它是如何并在何处变为空的?

让我们阅读W3C HTML5规范:

5.5.2历史界面 ..。 History接口的state属性必须返回用户代理设置的最后一个值。最初,它的值必须为null。

结论:当文档加载时,history.state最初是null

5.6.10历史遍历 当用户代理被要求遍历历史记录到指定的条目时,.,用户代理必须执行如下操作。 ..。

  1. 如果条目是状态对象条目,则让state是该状态对象的结构化克隆。否则,让state为空。

..。

  1. 如果指定条目的文档有最新的条目,并且该条目不是指定的条目,则让状态更改为true;否则,让它为false。

..。

    1. 如果状态更改为true,则使用PopStateEvent接口在文档的窗口对象处触发具有名称popstate的可信事件,状态属性初始化为状态值。..。

结论:在加载文档时导航回状态时,popstate事件触发的状态为null

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35924802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档