window.history.go(-1);后退不刷新问题 移动端

window.history.go(-1);后退不刷新问题 移动端本文主要解决移动端用返回键后滚动条自动置顶(我是这个问题,可能是用了layer的流加载原因,导致返回后自动置顶)或者不刷新问题。解决方法:(其实就是把上面刷新那行改成操作滚动条,需要事先保存滚动条位置)

大家好,欢迎来到IT知识分享网。

本文主要解决移动端用返回键后滚动条自动置顶(我是这个问题,可能是用了layer的流加载原因,导致返回后自动置顶)或者不刷新问题

  1. 不刷新问题

解决方法:

//在后退到达的界面上添加 判断是否是返回
window.addEventListener('pageshow', function (e) {
    if(e.persisted || (window.performance && window.performance.navigation.type == 2)){
        //刷新页面
        window.location.reload()
    }
});
  1. 滚动条自动置顶问题

解决方法:(其实就是把上面刷新那行改成操作滚动条,需要事先保存滚动条位置)

//页面离开时触发,保存当前滚动条位置
//这个好像有bug,说是要停留页面五秒才能正常触发,建议如果能捕获离开的方法的话,在那里保存更妥当
window.onbeforeunload = function () {
    var scrollPos;
    if (typeof window.pageYOffset != 'undefined') {
        scrollPos = window.pageYOffset;
    } else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') {
        scrollPos = document.documentElement.scrollTop;
    } else if (typeof document.body != 'undefined') {
        scrollPos = document.body.scrollTop;
    }
//保存滚动条位置
    sessionStorage.setItem("indexScTop",scrollPos)
}
//判断页面是否有滚动条(因为layer手机端流加载【返回上一页】时有重新渲染,防止设置滚动条复原太早)
function hasScrollbar() {
    return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight)
}
//判断用户是不是通过后退按钮访问本页面的
window.addEventListener('pageshow', function (e) {
    if(e.persisted || (window.performance && window.performance.navigation.type == 2)){
        if(sessionStorage.getItem("indexScTop")){
            // window.scrollTo(0,Number(sessionStorage.getItem("indexScTop")))
            const setIndexScTop = setInterval(function () {
                if(hasScrollbar()){
                    document.body.scrollTop = document.documentElement.scrollTop = parseInt(sessionStorage.getItem("indexScTop"));
                    sessionStorage.removeItem("indexScTop")
                    clearInterval(setIndexScTop)
                }
            },100)
        }
    }
});

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/23720.html

(0)
上一篇 2023-08-26 17:45
下一篇 2023-09-08 15:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信