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 相关文章推荐
juqery 学习之五 文档处理 包裹、替换、删除、复制
Feb 11 Javascript
jquery css 设置table的奇偶行背景色示例
Jun 03 Javascript
node.js读取文件到字符串的方法
Jun 29 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
Jul 20 Javascript
JS实现的添加弹出层并完成锁屏操作示例
Apr 07 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
Sep 18 Javascript
使用Vue自定义数字键盘组件(体验度极好)
Dec 19 Javascript
使用express搭建一个简单的查询服务器的方法
Feb 09 Javascript
vue引入axios同源跨域问题
Sep 27 Javascript
layui2.0使用table+laypage实现真分页
Jul 27 Javascript
js中调用微信的扫描二维码功能的实现代码
Apr 11 Javascript
JavaScript 如何计算文本的行数的实现
Sep 14 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实现图片缩放功能类
2013/12/18 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
Phpstorm+Xdebug断点调试PHP的方法
2018/05/14 PHP
浅析javascript 定时器
2014/12/23 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
Javascript中神奇的this
2016/01/20 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
python文件的md5加密方法
2016/04/06 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
Python坐标线性插值应用实现
2019/11/13 Python
Python Django view 两种return的实现方式
2020/03/16 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
python实现canny边缘检测
2020/09/14 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
实习护理工作自我评价
2013/09/25 职场文书
卫校中专生的自我评价
2014/01/15 职场文书
小学生安全责任书
2014/07/25 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
2014年招生工作总结
2014/11/26 职场文书
仓管员岗位职责
2015/02/03 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
婚宴新娘致辞
2015/07/28 职场文书
公司与个人合作协议书
2016/03/19 职场文书
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js