JavaScript中防止微信浏览器被整体拖动的方法


Posted in Javascript onAugust 25, 2017

在微信网页开发中,我使用的页面结构是在body下的container覆盖全屏,container下有个header和page的容器,page负责显示所有内容并实现滚动。

结构如图: 

JavaScript中防止微信浏览器被整体拖动的方法

但是遇到了一个问题:在页面已经滚动到顶部时,继续往下拖动page容器,会将微信浏览器整体往下拖,漏出“该网页由XXX提供”的提示,然后在安卓下,影响并不大,但是在iphone下,就没那么简单了,经过测试,在苹果下,往下拖动后快速滑动页面中的page,page并不会滚动,上拖同样遇到了这个问题,非常影响体验。

查阅文献后,我准备在touchstart和touchmove上做些处理。

思路是当page页面滚动到顶部时,再向下拖动会阻止默认的拖动事件,page页面到底后也阻止向上拖动。结构与代码如下

doctype html

html
  head
    title 微信拖动测试
    meta(charset="utf-8")
    meta(name="viewport", content="initial-scale=1, maximum-scale=1, minimum-scale=1")
    link(rel='stylesheet', href='/stylesheets/style.css')
    script(src="http://apps.bdimg.com/libs/zepto/1.1.4/zepto.min.js")
  body
    #container
      .header
        | header
      .page
        .box box1 in page
        .box box2 in page
        .box box3 in page
        .box.bottom box4 in page
  script.
    $(function() {
      var startY, endY;
      var box_height = $('#container').height();
      $('.page').on('touchstart', function(event) {
        event.stopPropagation();
        startY = event.touches[0].pageY;
      });
      $('.page').on('touchmove', function(event) {
        event.stopPropagation();
        var endY = event.changedTouches[0].pageY;
        var changedY = endY - startY;
        var scroll_top = $('.page').scrollTop();



  // 判断是否在顶部,且向下拖动
        if (scroll_top === 0 && changedY > 0) {
          event.preventDefault();
        }




  // 判断是否在底部,且向上拖动
        var o = $('.bottom').offset();
        if (o.top + o.height === box_height && changedY < 0) {
          event.preventDefault();
        }
      });



 // header禁止拖动
      $('.header').on('touchmove', function(event) {
        event.preventDefault();
      });
    });

样式如下:

*{
  padding: 0;
  margin: 0;
}
#container{
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background-color: #efefef;
  color: #fff;
  text-align: center;
  font-size: 40px;
}
.header{
  position: absolute;
  left: 0;
  right: 0;
  height: 80px;
  line-height: 80px;
  background-color: #ddd;
}
.page{
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  top: 80px;
  background-color: #ccc;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.page > *{
  z-index: 1;
}
.box{
  width: 100%;
  height: 300px;
  line-height: 300px;
  box-sizing: border-box;
  border-bottom: 2px solid #fff;
}

总结

以上所述是小编给大家介绍的JavaScript中防止微信浏览器被整体拖动的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
给Javascript数组插入一条记录的代码
Aug 30 Javascript
javascript中的绑定与解绑函数应用示例
Jun 24 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
Jan 06 Javascript
[原创]推荐10款最热门jQuery UI框架
Aug 19 Javascript
JavaScript运动减速效果实例分析
Aug 04 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
Mar 16 Javascript
Javascript必知必会(四)js类型转换
Jun 08 Javascript
理解javascript中的Function.prototype.bind的方法
Feb 03 Javascript
jquery实现倒计时小应用
Sep 19 jQuery
微信小程序使用setData修改数组中单个对象的方法分析
Dec 30 Javascript
基于iview-admin实现动态路由的示例代码
Oct 02 Javascript
uni-app微信小程序登录授权的实现
May 22 Javascript
在Js页面通过POST传递参数跳转到新页面详解
Aug 25 #Javascript
Vue上传组件vue Simple Uploader的用法示例
Aug 25 #Javascript
DVA框架统一处理所有页面的loading状态
Aug 25 #Javascript
基于JavaScript实现评论框展开和隐藏功能
Aug 25 #Javascript
js求数组中全部数字可拼接出的最大整数示例代码
Aug 25 #Javascript
Vue.js进行查询操作的实例详解
Aug 25 #Javascript
Vue实例中生命周期created和mounted的区别详解
Aug 25 #Javascript
You might like
用php获取远程图片并把它保存到本地的代码
2008/04/07 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
js资料toString 方法
2007/03/13 Javascript
Ext面向对象开发实践(续)
2008/11/18 Javascript
js 图片等比例缩放代码
2010/05/13 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
python修改注册表终止360进程实例
2014/10/13 Python
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
Python中装饰器兼容加括号和不加括号的写法详解
2017/07/05 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
python 多个参数不为空校验方法
2019/02/14 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
python实现KNN近邻算法
2020/12/30 Python
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
物流专业毕业生推荐信范文
2013/11/18 职场文书
团工委书记自荐书范文
2013/12/17 职场文书
民事代理词范文
2015/05/25 职场文书
在职证明书模板
2015/06/15 职场文书
欠款证明
2015/06/24 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
golang中的空slice案例
2021/04/27 Golang
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android