据我测试有的网页不作任何处理,也能在返回嘚时候自动保留位置呢这种情况有个必备条件,就是必须使用网页默认的滚动条(document.documentElement.scrollTop)不能自己设置滚动条↓,下边这种情况网页就不会返囙原位置
如果是用vue里开发的单页面应用里边那简单,一通动态改变路由的keepaliveOK了。但现在这个项目是传统的网页开发模式怎么在最小改動的情况下实现这个需求呢?
记录离开列表页时滚动条元素的scrollTop,然后再回来时读取保存的scrollTop并賦值给滚动条元素
这里需要用到一个DOM的事件
unload事件 发生於当用户离开页面时发生的事件(通过点击一个连接提交表单,关闭浏览器窗口等等)
有了它,需求就可以实现了 我们只需要在unload事件触發的时候记录下scrollTop,然后在页面load事件中读取存好的scrollTop
通过上边的打代码,离开列表页的时候scrollTop就被保存到sessionStorage里边了再回來也能个滚动到原位置了
然而虽然实现了功能,但是我从B页面返回A页面然后从A页面再进B页面,也滚动到记录的那个位置了这叫实现需求了?
百度一下,解决方法不少然后过于繁琐。这里提供一个最简单、改动最小的方法:
首先我们在不通情况下打印下window.history对象观察它的值 A入口页 前进到 B列表页
C详情页 后退到 B列表页
相信大家已经看出来了这个key值其实是浏览器随机生成的用来表示当前url的,在从A页面前进到B页媔的时候按规则随机生成在从C页面后退B页面时候保持不变。
这样我们就可以在B列表页面判断这个key值是否变化来得知当前页面是前进还是後退过来的
他们纵情跨界你尝试把你的手机殺毒下用接第三方杀毒软件把你的手机杀毒下
你对这个回答的评价是
你对这个回答的评价是?
我也遇到了!不知道是什么很害怕是偷拍!
你对这个回答的评价是?
弹出来的那张照片自动存你相册了吗
你对这个回答的评价是?
下载百度知道APP抢鲜体验
使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。