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 相关文章推荐
js 调用本地exe的例子(支持IE内核的浏览器)
Dec 26 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
Jan 22 Javascript
JavaScript之数组(Array)详解
Apr 01 Javascript
javascript获取系统当前时间的方法
Nov 19 Javascript
BootStrap的JS插件之轮播效果案例详解
May 16 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
Aug 14 Javascript
JavaScript中数组常见操作技巧
Sep 01 Javascript
mpvue将vue项目转换为小程序
Sep 30 Javascript
three.js实现圆柱体
Dec 30 Javascript
如何优雅地在vue中添加权限控制示例详解
Mar 07 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
Apr 03 Javascript
Ajax常用封装库——Axios的使用
May 08 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查询域名状态whois的类
2006/11/25 PHP
php中全局变量global的使用演示代码
2011/05/18 PHP
php中并发读写文件冲突的解决方案
2013/10/25 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
highcharts 在angular中的使用示例代码
2017/09/20 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
2020/05/13 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
Python 列表list使用介绍
2014/11/30 Python
python创建列表并给列表赋初始值的方法
2015/07/28 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
Python 实现向word(docx)中输出
2020/02/13 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
python的数学算法函数及公式用法
2020/11/18 Python
应届生法律求职信
2013/10/22 职场文书
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
党员岗位承诺书
2014/03/25 职场文书
禁毒宣传标语
2014/06/19 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
西安兵马俑导游词
2015/02/02 职场文书
自荐信怎么写
2015/03/04 职场文书
订货会主持词
2015/07/01 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js