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 相关文章推荐
jQuery 工具函数学习资料
Apr 29 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
Dec 11 Javascript
Javascript 运动中Offset的bug解决方案
Dec 24 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
Jul 29 Javascript
AngularJS中的Directive实现延迟加载
Jan 25 Javascript
JavaScript中的ParseInt(&quot;08&quot;)和“09”返回0的原因分析及解决办法
May 19 Javascript
jquery遍历table的tr获取td的值实现方法
May 19 Javascript
javascript中replace使用方法总结
Mar 01 Javascript
解析vue中的$mount
Dec 21 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
Sep 07 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
Nov 01 Javascript
Electron vue的使用教程图文详解
Jul 05 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
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
PHP Cookie学习笔记
2016/08/23 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
Bootstrap中表单控件状态(验证状态)
2016/08/04 Javascript
js 点击a标签 获取a的自定义属性方法
2016/11/21 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
python使用循环实现批量创建文件夹示例
2014/03/25 Python
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
利用Python实现图书超期提醒
2016/08/02 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
简单的Python调度器Schedule详解
2019/08/30 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
优秀干部获奖感言
2014/01/31 职场文书
文明村创建实施方案
2014/03/27 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
服务行业演讲稿
2014/09/02 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
会计工作态度自我评价
2015/03/06 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers
如何利用pygame实现打飞机小游戏
2021/05/30 Python