假如该页面是别人分享过来的而不是通过其他页面进入的呢?那么点击该按钮将不会有任何反应,因为此时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事件不会触发,会出现回退后,页面没有重载......暂时没有解决方法,告辞