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


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 相关文章推荐
select组合框option的捕捉实例代码
Sep 30 Javascript
jQuery 获取URL参数的插件
Mar 04 Javascript
js 将json字符串转换为json对象的方法解析
Nov 13 Javascript
一个判断抢购时间是否到达的简单的js函数
Jun 23 Javascript
9款2014最热门jQuery实用特效推荐
Dec 07 Javascript
js使用递归解析xml
Dec 12 Javascript
使用jQuery在对象中缓存选择器的简单方法
Jun 30 Javascript
深入学习jQuery中的data()
Dec 22 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
Dec 12 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
Aug 02 Javascript
js中!和!!的区别与用法
May 09 Javascript
JavaScript实现串行请求的示例代码
Sep 14 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 设计模式之 单例模式
2008/12/19 PHP
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
用Javascript评估用户输入密码的强度(Knockout版)
2011/11/30 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
使用yeoman构建angular应用的方法
2017/08/14 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
Python isinstance函数介绍
2015/04/14 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
Electric官网:美国高级眼镜和配件品牌
2020/06/04 全球购物
工厂保安员岗位职责
2014/01/31 职场文书
预备党员个人总结
2015/02/14 职场文书
个人学习总结范文
2015/02/15 职场文书
2016关于预防职务犯罪的心得体会
2016/01/21 职场文书
python 利用PyAutoGUI快速构建自动化操作脚本
2021/05/31 Python