我们平时再跳转页面时,页面会被保存至页面栈
里。每次回退
或左滑回退
时,会延页面栈依次返回。
那么问题来了,现有场景如下:
从 A 页面 ==》 B 页面 ==》 C 页面,但从 C 页面返回时,只能返回至 A 页面。
即 B 页面不记录到页面栈
里,那么从 C 页面返回时,就会直接返回至 A 页面。
如何才能不把 B 页面记录在页面栈
里呢?
浏览器有个属性:history ,里面包含了所有页面的记录栈,但不能修改
,只能读取
。
跳转页面
我们平时一般都用 window.location.href
= 'http://xxxxxxxx' 来跳转页面,这种方式会把当前页面 push
到页面栈里。
其实还有一种方式 window.location.replace
('http://xxxxxxxx'),即把当前页面替换
为新页面,其当前页面不会记录到页面栈里
。
如在 B 页面跳转至 C 页面可写为:window.location.replace
('页面C')
这时再返回时,会直接返回至 A 页面。
但是,好像不能实现,这时浏览器的一个属性 history
就起到作用了
再 history
里有个方法:replaceState
替换当前浏览器的状态,语法为
history.replaceState(null, '', '你想要替换的页面地址')
这俩结合就能实现不保存当前页面至页面栈了
如有更好的办法,欢迎小伙伴评论~~~
网友评论