解决jquery.pjax加载后的异常滚动
2024-09-06 21:02:20
个人博客 地址:http://www.wenhaofan.com/article/20181106154356
在使用jquery.pjax的时候发现每次加载完成后都会将滚动条滚动至顶部,用户体验极不友好,但是pjax实际上是用的异步加载html,浏览器也不会对点击事件进行操作,于是猜测是在代码中操作了滚动条,于是全局搜索
scrollTop
找到了以下代码
if (hash) {
var name = decodeURIComponent(hash.slice(1))
var target = document.getElementById(name) || document.getElementsByName(name)[0]
if (target) scrollTo = $(target).offset().top
} if (typeof scrollTo == 'number') $(window).scrollTop(scrollTo)
该代码在340行左右,在这里我们可以看见pjax在加载完成后会检查url hash是否为空,如果为空则获取锚点,然后滚动到锚点所在的位置,但是当url hash为空的时候,scrollTo值也依然为0,于是就直接将滚动条滚动到了顶部,这就非常蛋疼了,一般情况下在异步加载完成后我们并不需要滚动条滚动至顶部,所以这个操作异常bug,极其影响体验。
解决方法也很简单,仅需将 if (typeof scrollTo == 'number') $(window).scrollTop(scrollTo)移动至if代码块中,让它仅在设置锚点时操作滚动条。
最新文章
- MarkdownPad2 Pro v2.4.2.29969 专业中文破解版完美支持table表格语法
- javascript常用数组算法总结
- typedef block
- 【Java】Linux下安装配置Oracle JDK 1.7版本
- 51nod1009(1的数目)
- 简单运用 activity 的 button 点击事件
- asp.net关于Repeater控件中的全选,批量操作
- SmtpDlg 调用SMTP
- 【Maven篇】---解决Maven线上部署java.lang.ClassNotFoundException和no main manifest attribute解决方法
- TCP/IP(五)传输层之细说TCP的三次握手和四次挥手
- 调试利器GDB(下)
- 自学自用 = B站(操作系统_清华大学(向勇、陈渝)) 未完待续。。
- Redux学习(2) ----- 异步和中间件
- 自学Python3.4-函数分类(匿名函数)
- python2.x到python3.x函数变化
- 关于cocos2dx 关键字的问题
- mysql中enum类型
- [转]好用工具:Oracle SQL Developer
- java.io.File中的 pathSeparator 与separator 的区别
- C++并发编程 互斥和同步
热门文章
- java 正则表达式空格无法匹配
- 在服务器上搭建远端git仓库
- centos5,6 系统启动流程
- idea 编译报错 Build completed with 1 error and 0 warnings in 2 s 113 ms
- (LNMP) Nginx_PHP_MariaDB
- Fhq Treap [FhqTreap 学习笔记]
- 服务治理框架:Spring Cloud Eureka
- warning Attribute 'showExpand' must be hyphenated
- 多重集组合数 简单dp
- scrapy(一)--Pycharm创建scrapy项目