完美解决手机浏览器顶部下拉出现网页源或刷新的问题


Posted in Javascript onNovember 30, 2017

问题如下图所示:

完美解决手机浏览器顶部下拉出现网页源或刷新的问题

一般处理此类问题都会有一个属性:”event.preventDefault()”,但是如果直接使用会导致页面的内部滚动也失效导致不能滚动,我所处理的方式也与其类似。

因为滑动区域是向走的,所以滑动块的顶部到浏览器顶部的距离最大为0(其余为负值[$('#bodycthead').offset().top]),当为0的时候说明已经回到了顶部,继续向下拉动的时候就不应该有反应,可以禁止默认滑动,而向上拉动的时候应该取消默认的滑动,所以应该将”event.preventDefault()”封装成一个函数。

需要做的就是判断是向上滑动还是向下滑动,当接触屏幕的时候记录一个Y值(scroll_start = e.changedTouches[0].clientY;),移动的时候会产生一个Y值(e.changedTouches[0].clientY),两个值得差值(e.changedTouches[0].clientY-scroll_start)如果是正值说明是向下滑动,如果是负值则是向上滑动。

添加事件监听:

var scroll_start=0;//定义滑动时的起点
function handler(){//禁止默认滑动函数
 event.preventDefault();
}
document.addEventListener("touchstart",function(e){
 scroll_start = e.changedTouches[0].clientY;//设置起点为触摸时的点
 if($('#bodycthead').offset().top==0){//如果触摸时是滑动块在顶部则禁用默认滑动
  document.addEventListener('touchmove', handler, false);
 }
});
document.addEventListener("touchmove",function(e){
 $("title").html(e.changedTouches[0].clientY-scroll_start);
 if($('#bodycthead').offset().top==0){//想做的是中断滑动并禁用默认滑动,暂时没找到中断的方法
  document.addEventListener('touchmove', handler, false);
 }
 if((e.changedTouches[0].clientY-scroll_start)<0){//如果是向上滑动则恢复默认滑动
  document.removeEventListener('touchmove', handler, false);
 }
});

暂时没做到中断滑动并禁止默认滑动效果,欢迎大家指导!

以上这篇完美解决手机浏览器顶部下拉出现网页源或刷新的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS特殊函数(Function()构造函数、函数直接量)区别介绍
May 19 Javascript
JavaScript之IE的fireEvent方法详细解析
Nov 20 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
Jun 16 Javascript
详细分析JavaScript函数定义
Jul 16 Javascript
15个常用的jquery代码片段
Dec 19 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
Jan 01 Javascript
JavaScript实现经典排序算法之选择排序
Dec 28 Javascript
AngularJS路由切换实现方法分析
Mar 17 Javascript
微信小程序实现YDUI的ScrollTab组件
Feb 02 Javascript
微信小程序实现评论功能
Nov 28 Javascript
从组件封装看Vue的作用域插槽的实现
Feb 12 Javascript
解决vue.js提交数组时出现数组下标的问题
Nov 05 Javascript
微信小程序实现添加手机联系人功能示例
Nov 30 #Javascript
html中通过JS获取JSON数据并加载的方法
Nov 30 #Javascript
微信小程序中吸底按钮适配iPhone X方案
Nov 29 #Javascript
jQuery zTree 异步加载添加子节点重复问题
Nov 29 #jQuery
写给小白看的JavaScript异步
Nov 29 #Javascript
3种vue组件的书写形式
Nov 29 #Javascript
easyui下拉框动态级联加载的示例代码
Nov 29 #Javascript
You might like
PHP中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
PHP中让curl支持sock5的代码实例
2015/01/21 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
event.X和event.clientX的区别分析
2011/10/06 Javascript
jQuery插件开发基础简单介绍
2013/01/07 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
jquery、js操作checkbox全选反选
2014/03/12 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
2018/03/01 Javascript
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
Python下Fabric的简单部署方法
2015/07/14 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
Python实现自动上京东抢手机
2018/02/06 Python
详解python 中in 的 用法
2019/12/12 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
就业自荐书
2013/12/05 职场文书
《长城》教学反思
2014/02/14 职场文书
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
鸦片战争观后感
2015/06/09 职场文书
力克胡哲观后感
2015/06/10 职场文书