分享页面后添加新的路由栈

假如该页面是别人分享过来的而不是通过其他页面进入的呢?那么点击该按钮将不会有任何反应,因为此时history对象中不存在历史记录,也就是说这是你浏览器窗口打开时浏览的第一个页面,

 

现在希望分享出去后,可以点击返回按钮,返回到指定的页面

history.replaceState(null, null, 'https://home') //替换掉当前页面,不会刷新页面
history.pushState(null, null, currentUrl)//使用history.pushState添加历史 currentUrl 当前页面地址,让用户可以点击返回按钮,当前页面也不会刷新
     //点击后退按钮(或者在JavaScript中调用history.back()方法)时触发;
     //如果用户点击回退,则会退到 https://home 前进则会到curenturl页面
window.onpopstate = function () {
         setTimeout(function () {
           window.location.reload()//路由栈https://home在分享后,没有加载过,
而有些浏览器在点击返回按钮的时候,是不会触发onload事件,也就并没有刷新,bfcache,在回退的时候需要重新加载一次
         }, 50)
}

操作流程 

主页 替换 分享页  ===>  当前页: 主页  replaceState修改当前历史记录,但页面不会刷新,仅仅是修改页面地址

主页  添加 分享页  ===>当前页:分享页  pushsState 添加历史记录,页面不会刷新,回退按钮可操作,并且回退的是之前修改页面

onpopstate监听回退事件  并且重载一次主页

 

好的,新的问题 ios浏览器的机制,就是如果不对页面进行任何操作.比如点击等操作,onpopstate事件不会触发,会出现回退后,页面没有重载......暂时没有解决方法,告辞

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值