问题:电脑版微信浏览器中,history.length不会因为关闭浏览器而消失,所以在执行history.go(-1)时,微信浏览器会判定为上一个页面存在,执行跳转。但当在微信中点击链接直接进入目标页面时,实际上当前浏览器中是不存在上一个页面的,导致倒退变成空白。
解决方法1:可以直接使用window.location.href('www.xx.com')来跳转到指定“页面”。
缺点:如果上一个页面的url中是带着筛选数据的列表页,那么就无法返回到之前筛选的状态
解决方法2:在列表页(返回键指向的页面)使用
sessionStorage.setItem("read_history", "already_read");
来设置标记,在进入目标页点击返回时,判定:
if (sessionStorage.getItem("read_history")=="already_read")
如果有标记,则代表前一个页面(列表页)是存在的,执行history.go(-1),反之则return false;停留在当前页面来防止触发进入空白页的BUG。
缺点:sessionStorage的标准是在关闭浏览器时,会清除数据(read_history)。然而!pc版微信浏览器就是个坑啊!关闭浏览器之后sessionStorage居然还在!这样一来,直接进入目标页面时,IF判断仍然会判定为ture,然后又进入空白页....只有当重启微信时,sessionStorage数据才会清除。
解决方法3:待补坑