2 qq 19891827 qq_19891827 于 2016.03.25 17:13 提问

微信页面回退记忆scrollTop值失效问题

本人想做一个网页后退后记忆滚动条位置的功能,在新版本谷歌、火狐、ie浏览器测试都能正常使用,但是唯独在微信上打开页面大多数情况下此功能失效,只有小几率会成功,求专家帮忙解决,这是代码

 window.onload=function(){
        if(location.hash){
            var st=location.hash.replace('#st=','');
            $(window).scrollTop(st);
            //alert(st);
        }
    };
    window.onunload=function(){
        var hrefs='';
        if(location.hash){
            hrefs=location.hash.replace(/#st=\d+/,'');
        }
        history.replaceState('','',hrefs+'#st='+$(window).scrollTop());
    };

1个回答

showbo
showbo   Ds   Rxr 2016.03.25 17:19
已采纳

你alert下st获取到没有。微信点击手机上返回应该用的是location.href而不是history.back

qq_19891827
qq_19891827 回复无聊码农: 哦,这样啊!非常感谢您
2 年多之前 回复
showbo
showbo 回复qq_19891827: 经验。。有些时候加延时器就会有效。如ie经典的scroll事件多次执行,需要用计时器来控制只执行一次
2 年多之前 回复
qq_19891827
qq_19891827 解决了,把定时器时间设置为100效果不大好,还是有几率失效,我测了一下把时间设置为300效果比较好。谢谢你。能告诉我加延迟的作用么?
2 年多之前 回复
showbo
showbo 回复qq_19891827: $(window).scrollTop(st);改为document.body.scrollTop=document.documentElement.scrollTop=st;试试,还不是用计时器延时执行设定的代码setTime(function(){设置scrollTop的代码},100);
2 年多之前 回复
qq_19891827
qq_19891827 有什么解决办法么
2 年多之前 回复
qq_19891827
qq_19891827 alert可以取到,知识scrollTop大多数情况下设置不上去
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于js中 document.body.scrollTop 不能返回正确值的原因
本来是为了通过document.body.scrollTop来获取浏览器垂直滚动条向下滚动的像素,但是不管滚动条在什么位置总是返回是0,造成这样的原因和html的头部声明有关,如果头部声明 为:http://www.w3.org/TR/html4/loose.dtd">,这样肯定得到的结果是 0,如果该为就能得到正确的结果,对于第一种头部声明想要得滚动条的滚动的高度怎么办,解决方法有两种1、v
window.scrollTop()设置失效问题
window.scrollTop()设置失效问题body没有添加高度,window.scrollTop()设置失效。
元素scrollTop设置无效的原因及解决办法
在做项目时,需要设置一个隐藏的元素的scrollTop,然后将其显示。当时使用了jQuery的scrollTop方法,但是无效,百度了许久,仍找不出有效的解决方法。于是自己新建了一个网页用来测试scrollTop方法失效的原因,在一番折腾后,终于弄清楚了问题的原因和解决办法。      scrollTop失效的原因    当一个元素的display属性为'none'时,对该元素设置scroll
iOS scrollsToTop属性失效
iOS scrollsToTop属性失效
解决ios微信页面回退不刷新
在回退后需要刷新的页面加以下js(需要jquery) $(function () { var isPageHide = false; window.addEventListener('pageshow', function () { if (isPageHide) { window.location.reload(); }
滚动条JS中document.body.scrollTop不起作用的原因
<br />原来在HTML文件头部声明了这样一句:<br /><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><br /><br />改成这样就好了:<br /><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><br />但页面中就忽略了margin的居中了,在google里查
scrollTop在FireFox与Chrome浏览器间的兼容问题
FireFox与Chrome的scrollTop的兼容问题 直到我今天在FireFox测试时发现,火狐下页面滚动的跳转功能无法使用。 1、原生接口测试 这里先提一下: document.documentElement 即   元素,而  document.body 即    元素。 测试结果,在火狐上只能通过html元素来获取和设定页面滚动高度,而
设置scrollTop无效
刚好遇到这个问题,记录下来。看到别人说的需要设置高度,页面高度已经设置为100%,还是无效,后面发现是页面设置了overflow:hidden导致的,将其去掉或者设置为overflow:visible就好了。
关于这么多次对于scrollTop的使用情况和onscroll事件
看了很多的关于scrollTop属性的分析自己也进入了不少坑(毕竟自己是一个菜鸟加智障),所以特此来总结一下,如果有不对的地方大家快来纠正我啊!!! 大家都知道scrolltop是用来让元素向上翻的高度,使用情景:只有父元素的高度小于子元素同时,父元素设置了overflow:hidden和overflow:scroll才可以让父元素的高度卷上去设置scrolltop才可以生效,否则在我们父元素中
解决微信浏览器回退刷掉ajax数据
这样一个场景:我们在微信浏览一个列表,列表的数据下拉通过ajax加载数据,绑定在后面,当点击某一选项时,跳到详细信息页面,返回列表页是发现,通过ajax加载出来的数据被刷掉了。那怎么解决这个问题呢?想了许久,可以用两个方法解决。使用cookie 和history解决。这里介绍的是cookie解决这个问题。history看下一篇。 思路:在跳转详细页的时候,用cookie记录下ajax加载