最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:懂视网 责编:小采 时间:2020-11-27 22:31:42
文档

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

JavaScript中防止微信浏览器被整体拖动的方法:在微信网页开发中,我使用的页面结构是在body下的container覆盖全屏,container下有个header和page的容器,page负责显示所有内容并实现滚动。 结构如图: 但是遇到了一个问题:在页面已经滚动到顶部时,继续往下拖动page容器,会将微信浏览器整体往下
推荐度:
导读JavaScript中防止微信浏览器被整体拖动的方法:在微信网页开发中,我使用的页面结构是在body下的container覆盖全屏,container下有个header和page的容器,page负责显示所有内容并实现滚动。 结构如图: 但是遇到了一个问题:在页面已经滚动到顶部时,继续往下拖动page容器,会将微信浏览器整体往下

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

结构如图: 

但是遇到了一个问题:在页面已经滚动到顶部时,继续往下拖动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中防止微信浏览器被整体拖动的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

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

JavaScript中防止微信浏览器被整体拖动的方法:在微信网页开发中,我使用的页面结构是在body下的container覆盖全屏,container下有个header和page的容器,page负责显示所有内容并实现滚动。 结构如图: 但是遇到了一个问题:在页面已经滚动到顶部时,继续往下拖动page容器,会将微信浏览器整体往下
推荐度:
标签: 微信 方法 浏览器
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top