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


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 相关文章推荐
javascript appendChild,innerHTML,join性能比较代码
Aug 29 Javascript
jquery制作弹窗提示窗口代码分享
Mar 02 Javascript
如何防止JavaScript自动插入分号
Nov 05 Javascript
jqGrid中文文档之选项设置
Dec 02 Javascript
AngularJS基础 ng-show 指令简单示例
Aug 03 Javascript
jQuery弹出遮罩层效果完整示例
Sep 13 Javascript
request请求获取参数的实现方法(post和get两种方式)
Sep 27 Javascript
jQuery选择器实例应用
Jan 05 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
Feb 07 Javascript
BootStrap 导航条实例代码
May 18 Javascript
基于angular2 的 http服务封装的实例代码
Jun 29 Javascript
微信小程序button标签open-type属性原理解析
Jan 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
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
php微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
JavaScript中扩展Array contains方法实例
2020/08/23 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
JavaScript实现分页效果
2017/03/28 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
对tensorflow中cifar-10文档的Read操作详解
2020/02/10 Python
世界领先的26岁以下学生和青少年旅行预订网站:StudentUniverse
2018/07/01 全球购物
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
学校爱心捐款倡议书
2014/05/13 职场文书
2015年党总支工作总结
2015/05/25 职场文书
公司行政管理制度范本
2015/08/05 职场文书
初中英语教学反思范文
2016/02/15 职场文书
go:垃圾回收GC触发条件详解
2021/04/24 Golang
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript