JavaScript禁止微信浏览器下拉回弹效果


Posted in Javascript onMay 16, 2017

本文实例为大家分享了JavaScript禁止微信浏览器下拉回弹的效果,供大家参考,具体内容如下

方法1:

<script type="text/javascript"> 
  var overscroll = function(el){ 
    el.addEventListener('touchstart', function(){ 
      var top = el.scrollTop; 
      var totalScroll = el.scrollHeight; 
      var currentScroll = top + el.offsetHeight; 
      if(top === 0) { 
        el.scrollTop = 1; 
      }else if(currentScroll === totalScroll){ 
        el.scrollTop = top - 1; 
      } 
    }); 
    el.addEventListener('touchmove', function(evt){ 
      if(el.offsetHeight < el.scrollHeight){ 
        evt._isScroller = true; 
      } 
    }); 
  } 
  overscroll(document.querySelector('.scroll'));//哪里需要可以局部滚动,添加一个“scroll”的class 
  document.body.addEventListener('touchmove', function(evt) { 
    if(!evt._isScroller){ 
      evt.preventDefault(); 
    } 
  }); 
</script>

此方法的优缺点:
优点:支持局部滚动;
缺点:浏览器本身超出页面出现的滚动被禁用掉了,需要改为局部滚动,且局部滚动的地方需要加“scroll”的class。
注:如果同一个页面多个局部滚动,需要将
overscroll(document.querySelector('.scroll');
改为
for(var i=0;i<document.querySelectorAll('.scroll').length;i++){
overscroll(document.querySelectorAll('.scroll')[i]);
}

方法2:

<script type="text/javascript"> 
  function stopDrop(){ 
    var lastY;//最后一次y坐标点 
    $(document.body).on('touchstart', function(event) { 
      lastY = event.originalEvent.changedTouches[0].clientY;//点击屏幕时记录最后一次Y度坐标。 
    }); 
    $(document.body).on('touchmove', function(event) { 
      var y = event.originalEvent.changedTouches[0].clientY; 
      var st = $(this).scrollTop(); //滚动条高度  
      if (y >= lastY && st <= 10) {//如果滚动条高度小于0,可以理解为到顶了,且是下拉情况下,阻止touchmove事件。 
        lastY = y; 
        event.preventDefault(); 
      } 
      lastY = y; 
    }); 
  } 
</script>

此方法的优缺点:
优点:支持浏览器本身超出页面的滚动
缺点:不支持局部滚动

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 事件绑定函数代码
Apr 28 Javascript
IE图片缓存document.execCommand(&quot;BackgroundImageCache&quot;,false,true)
Mar 01 Javascript
用js闭包的方法实现多点标注冒泡示例
May 29 Javascript
ajax分页效果(bootstrap模态框)
Jan 23 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
Mar 30 Javascript
js,jq,css多方面实现简易下拉菜单功能
May 13 Javascript
Webpack执行命令参数详解
Jun 17 Javascript
使用Dropzone.js上传的示例代码
Oct 10 Javascript
axios post提交formdata的实例
Mar 16 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
Apr 27 Javascript
妙用缓存调用链实现JS方法的重载
Apr 30 Javascript
vue中的mvvm模式讲解
Jan 31 Javascript
jQuery实现div跟随鼠标移动
Aug 20 #jQuery
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
May 15 #jQuery
bootstrap响应式表格实例详解
May 15 #Javascript
VUE多层路由嵌套实现代码
May 15 #Javascript
JavaScript制作简单的框选图表
May 15 #Javascript
vue.js 使用v-if v-else发现没有执行解决办法
May 15 #Javascript
AngularJs 常用的过滤器
May 15 #Javascript
You might like
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
简单纯js实现点击切换TAB标签实例
2015/08/23 Javascript
Javascript验证方法大全
2015/09/21 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
9种改善AngularJS性能的方法
2017/11/28 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
Random 在 Python 中的使用方法
2018/08/09 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
Python接口测试get请求过程详解
2020/02/28 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
三好学生评语大全
2014/12/29 职场文书
发布会邀请函
2015/01/31 职场文书
听证会主持词
2015/07/03 职场文书
初中毕业感言300字
2015/07/31 职场文书
python实现三次密码验证的示例
2021/04/29 Python