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


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 相关文章推荐
使用AngularJS创建单页应用的编程指引
Jun 19 Javascript
异步JS框架的作用以及实现方法
Oct 29 Javascript
angularjs 源码解析之scope
Aug 22 Javascript
微信小程序 登陆流程详细介绍
Jan 17 Javascript
javascript内存分配原理实例分析
Apr 10 Javascript
javascript编程实现栈的方法详解【经典数据结构】
Apr 11 Javascript
Vue学习笔记之表单输入控件绑定
Sep 05 Javascript
vue-cli的工程模板与构建工具详解
Sep 27 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
Dec 09 Javascript
layui实现数据表格隐藏列的示例
Oct 25 Javascript
关于vue路由缓存清除在main.js中的设置
Nov 06 Javascript
js cavans实现静态滚动弹幕
May 21 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下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
php的ajax框架xajax入门与试用介绍
2010/12/19 PHP
php比较多维数组中值的大小排序实现代码
2012/09/08 PHP
php获取开始与结束日期之间所有日期的方法
2016/11/29 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
网页下载文件期间如何防止用户对网页进行其他操作
2014/06/27 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
2016/05/26 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
微信小程序日历插件代码实例
2019/12/04 Javascript
js实现移动端图片滑块验证功能
2020/09/29 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
Python类的用法实例浅析
2015/05/27 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
python标准库os库的函数介绍
2020/02/12 Python
使用python实现飞机大战游戏
2020/03/23 Python
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
小学生自我评价范例
2013/09/24 职场文书
出国留学自荐信
2013/10/25 职场文书
产品销售员岗位职责
2013/12/18 职场文书
营业员演讲稿
2013/12/30 职场文书
婚礼证婚人证婚词
2014/01/08 职场文书
全神贯注教学反思
2014/02/03 职场文书
大学军训感言800字
2014/02/27 职场文书
学院党的群众路线教育实践活动第一阶段情况汇报
2014/10/25 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
走进毛泽东观后感
2015/06/04 职场文书
修辞手法有哪些?
2019/08/29 职场文书