Javascript 在浏览器背面使window.history.state为空的可能情况有哪些?
我的网站的查询字符串URL如下:Javascript 在浏览器背面使window.history.state为空的可能情况有哪些?,javascript,jquery,browser-history,pushstate,html5-history,Javascript,Jquery,Browser History,Pushstate,Html5 History,我的网站的查询字符串URL如下: ?budget=0-&year=0-&kms=0-&so=-1&sc=-1&pn=1 当用户转到下一页(从第1页到第2页)时: 我们显式递增pn(页码为1)并在查询字符串URL中设置它 已更改的查询字符串: ?budget=0-&year=0-&kms=0-&so=-1&sc=-1&pn=2 我还存储了旧的查询字符串,它看起来像: ?budget=0-&year=0-&a
?budget=0-&year=0-&kms=0-&so=-1&sc=-1&pn=1
当用户转到下一页(从第1页到第2页)时:
pn
(页码为1)并在查询字符串URL中设置它
已更改的查询字符串:
?budget=0-&year=0-&kms=0-&so=-1&sc=-1&pn=2
我还存储了旧的查询字符串,它看起来像:
?budget=0-&year=0-&kms=0-&so=-1&sc=-1&pn=1
window.history.pushState(oldQS, null, newQS);
window.history.state
。它存储我以前的状态:
?budget=0-&year=0-&kms=0-&so=-1&sc=-1&pn=1
$(window).on('popstate', function(e) {
console.log(e.originalEvent.state)
});
e.originalEvent.state
为null
- 当我在第2页时,
不是窗口.history.state
并存储正确的值null
- 当我单击browser back时,它将获得
值李>null
- 将断点放在
事件上,但没有帮助,因为URL中没有#hashchange
- 在每个
函数,如窗口上放置断点。我的Javascript代码上的历史记录
,pushState()
,但当我按browser back时,没有一个函数被击中replaceState()
window.history.state
更改为null
我如何通过单击“返回浏览器”来找出它是如何变为空的以及在哪里变为空的?您问:
我不知道要查看哪些其他位置/函数可能会将window.history.state更改为null
我如何通过单击browser back(浏览器返回)来找出它是如何变为空的以及在哪里变为空的
让我们阅读W3C HTML5规范:
历史记录接口的state属性必须返回用户代理设置的最后一个值。最初,其值必须为null
结论:加载文档时,history.state
最初为null
当需要用户代理将历史遍历到指定的条目[…]时,用户代理必须执行以下操作
结论:当导航回加载文档时的状态时,由
popstate
事件触发的状态是null
是history。state
null,或者它是否按预期包含您的信息?history.state也是null。哦,您没有第1页的状态,您只定义了第2页的状态。然后,当您返回时,page1没有任何状态,因为让用户进入page1的任何内容都没有绑定到页面的状态。当用户从page1转到page2时,我存储了page1状态:window.history.pushState(oldQS、null、newQS);oldQS具有page1状态。是的,但您正在为page2而不是page1存储oldQS
。。。在“转到”页面之前,必须设置这种状态。在转到第1页之前,如何设置状态?(我想你不会…)