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


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 相关文章推荐
jQuery使用手册之三 CSS操作
Mar 24 Javascript
js或css实现滚动广告的几种方案
Jan 28 Javascript
关于document.cookie的使用javascript
Oct 29 Javascript
javascript内置对象操作详解
Feb 04 Javascript
简单的分页代码js实现
May 17 Javascript
JavaScript 闭包机制详解及实例代码
Oct 10 Javascript
微信小程序(应用号)开发新闻客户端实例
Oct 24 Javascript
js实现文字跑马灯效果
Feb 23 Javascript
使用js获取伪元素的content实例
Oct 24 Javascript
微信开发之微信jssdk录音功能开发示例
Oct 22 Javascript
JavaScript键盘事件常见用法实例分析
Jan 03 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
Dec 11 Vue.js
微信小程序实现添加手机联系人功能示例
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
缅甸的咖啡简史
2021/03/04 咖啡文化
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
PHP通过COM使用ADODB的简单例子
2006/12/31 PHP
php minixml详解
2008/07/19 PHP
php 多个submit提交表单 处理方法
2009/07/07 PHP
PHP操作xml代码
2010/06/17 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
php实现文件预览功能
2017/05/23 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
Jquery 设置标题的自动翻转
2009/10/03 Javascript
关于COOKIE个数与大小的问题
2011/01/17 Javascript
jQuery创建DOM元素实例解析
2015/01/19 Javascript
jQuery找出网页上最高元素的方法
2015/03/20 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
Python实现的数据结构与算法之队列详解
2015/04/22 Python
python魔法方法-自定义序列详解
2016/07/21 Python
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
python django中8000端口被占用的解决
2019/12/17 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
玲玲的画教学反思
2014/02/04 职场文书
委托协议书范本
2014/04/22 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
对公司的意见和建议
2015/06/04 职场文书
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL