美文网首页
window.history 页面栈的回退问题

window.history 页面栈的回退问题

作者: 酷酷的凯先生 | 来源:发表于2021-04-26 20:23 被阅读0次

    我们平时再跳转页面时,页面会被保存至页面栈里。每次回退左滑回退时,会延页面栈依次返回。

    那么问题来了,现有场景如下:
    从 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, '', '你想要替换的页面地址')

    这俩结合就能实现不保存当前页面至页面栈了

    如有更好的办法,欢迎小伙伴评论~~~

    相关文章

      网友评论

          本文标题:window.history 页面栈的回退问题

          本文链接:https://www.haomeiwen.com/subject/nzaerltx.html