document.addEventListener('scroll',"事件名",false)在手机端失效

问题:

在实现手机端分页加载问题的时候 滑动完第一页无法加载第二页,但pc上却没问题;

解决办法:

首先 -- document.addEventListener('scroll', this.scrollHandle, false); 里的scroll 改成 touchmove,改完后 你在手机上滑动屏幕就可以触发绑定的方法了。
其次 -- 如果改成了touchmove还是不可以 看看是不是 document.documentElement.scrollTop 这个出的问题:这个有兼容性问题在有的浏览器下会一直获取的是0 这样的话就无法触发 this.loadData(); 请求数据的这个方法 所以就无法加载第二页;
注:以上两步是我处理这个bug的关键

代码如下:
mounted(){
     //scroll  在手机端不起作用
    //document.addEventListener('scroll', this.scrollHandle, false);  
   document.addEventListener('touchmove', this.scrollHandle, false);  
}
methods:{
       /**
        * 滚动加载下一页
        */
scrollHandle: function () {
    //浏览器内容的高度
   var scrollHeight = document.body.scrollHeight;
  //浏览器滚动部分的高度: 这里要处理兼容性 这一步很关键
   var scrollTop = 
  document.documentElement.scrollTop||document.body.scrollTop;
  //获取屏幕的高度
  var clientHeight = document.documentElement.clientHeight;
  //如果 scrollTop一直是0 的话就无法执行条件调用数据的方法
   if (scrollHeight - scrollTop - clientHeight <= 10 ) {
         this.loadData(); //执行加载数据的方法
    }
 }
}

以下这篇文章 对 document.body.scrollHeight 等 兼容性解释的很好很权
https://blog.csdn.net/jack_zengzhen/article/details/79013841

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • _________________________________________________________...
    fastwe阅读 5,098评论 0 0
  • JavaScript 将字符串转换为数字 parseInt() ◆只保留数字的整数部分,不会进行四舍五入运算。 ...
    AkaTBS阅读 4,547评论 0 9
  • DOM是一套编程接口,让js能操作html和xml。 1. DOM选择器 1.1 document.getElem...
    啃香菜的花萝萝阅读 3,332评论 0 3
  • _________________________________________________________...
    fastwe阅读 2,738评论 0 0
  • Mobile Web Favorites 参与贡献 移动前端开发收藏夹,欢迎使用Issues以及 Pull Req...
    柴东啊阅读 4,233评论 0 2

友情链接更多精彩内容