移动端——页面点击( touchend -> click)
手机端页面好多要注意的,点击事件就是其中一个:
在手机端页面中使用 click,安卓手机能正常实现点击效果,可是苹果手机不能点击;用 touchend 代替 click,苹果手机中能点击,但是可能出现小问题。
所以,在进行移动端页面优化时,一般使用 touch 事件替代鼠标相关事件,用的较多的是使用 touchend 事件替代PC端的 click 和 mouseup 事件。
注:在使用 touched 时最好都加上 t.preventDefault(); 阻止浏览器默认的后续动作。
接下来记录我使用 touchend 遇到的问题的解决方法:
1、点击后页面自动放大【 IOS 】
具体描述:在 newPlace.html( 选择新地点)页面中,点击建筑、楼层、房间、工位右侧的 input 会弹出遮罩层,选择遮罩层中的相应选项后,会显示在对应建筑、楼层、房间、工位右侧。但是在点击弹出遮罩层时页面会自动放大。
<li class="place_lis area" data-type="area">
<span>建筑</span>
<input type="text" class="control" onfocus="this.blur();">
<img src="../img/chaoxia.png">
</li>
解决方法:使用 preventDefault() 方法,阻止元素发生默认的行为。
$(".control").on('touchend',function(t){
// 点击之后的操作 t.preventDefault(); // 阻止元素发生默认的行为
});
2、页面滑动事件触发 touchend 点击事件【 Android & IOS 】
具体描述:在serviceRequest.html 服务需求页面中滑动查看所有服务需求后,会跳转至需求详情页面。也就是说:在页面滑动完成后,如果当前触点的位置所指的元素绑定了 touchend 事件,这时便会触发该元素的 touchend 事件,造成误操作。
解决方法:在页面滚动时停止 touchend 事件冒泡,这样就可以防止触发 touchend 事件。
$(function(){
stopTouchendPropagation_AfterScroll();
$(document).on('touchend', '.service_cont', function (t) {
window.location.href = "servicePJ_before.html?id=" + $(this).attr('id') + "";
t.preventDefault();
});
});
function stopTouchendPropagation_AfterScroll(){
var locked = false; window.addEventListener('touchmove', function(ev){
locked || (locked = true, window.addEventListener('touchend', stopTouchendPropagation, true));
}, true);
function stopTouchendPropagation(ev){
ev.stopPropagation();
window.removeEventListener('touchend', stopTouchendPropagation, true);
locked = false;
}
}
注:在移动端,scroll 事件是在滚动结束后才会触发一次,而 touchmove 事件是在滑动过程中多次触发,使用 scroll 会比使用 touchmove 在性能上有一定优化。
但是在上面 stopTouchendPropagation_AfterScroll() 函数中,用 touchmove 不用 scroll,是为了使函数适用于小于一个屏幕高度的页面。
移动端——页面点击( touchend -> click)的更多相关文章
- 移动端页面-点击input输入框禁止放大效果
点击input输入框会获取焦点并且放大 解决方法:在项目根目录找到 index.html <meta name="viewport" content="width= ...
- 移动端页面中点击input输入框的时候弹出的键盘将输入框挡住的问题
使用的是vux框架, 以为是框架问题, 后来发现是把当前页面的高度写死为了height:200%: 只要把高度去掉就能让页面自动弹到输入框的上方:
- 解决移动端页面滚动后不触发touchend事件
解决移动端页面滚动后不触发touchend事件 问题 在移动端页面进行优化时,一般使用touch事件替代鼠标相关事件.用的较多的是使用touchend事件替代PC端的click和mouseup事件. ...
- WAP页面点击与hover延迟解决之道
最近一直在WAP端页面的开发,一直都知道wap端点击相关问题存在延迟.之前做的网页大部分使用a链接进行,一直未入此坑. 最近做的一个WAP网站,各种点击,hover事件,如果使用PC端网页的做法,直接 ...
- 移动端300ms点击事件的延迟
移动端click事件300ms延迟 移动端click事件300ms的延迟在目前看来,已经是老生常谈了. 以下内容,我会在参考资源的基础上谈谈我对移动端click事件300ms延迟的一些理解.本人愚昧, ...
- 移动端点击(click)事件延迟问题的产生与解决方法
http://blog.csdn.net/xjun0812/article/details/64919063 问题的发现 上班做项目的时候碰到一个移动端项目,其中有个小游戏,相当于天上掉馅饼,用户需要 ...
- 【技术博客】移动端的点击事件与Sticky Hover问题
目录 移动端的点击事件与Sticky Hover问题 TL;DR 前言 问题描述 背景 实现方式 问题 关于移动端浏览器的点击事件 初次发现问题后各种解决尝试:从点击事件本身下手 cursor: po ...
- 移动端页面V2.0项目改版总结
移动端页面已经进行的第三次改版,这个版本遇到的最大难题就是页面跳转的问题. 项目需求: 页面上有分别有优惠估价.我要估价.历史竞拍这三个Tab选项卡,当用户点击估价,选择品牌以后,前端需要去请求品牌接 ...
- 利用websocket实现手机扫码登陆后,同步登陆信息到web端页面
新手必看 广播系统 事件系统 准备工作 初始化项目 引入 laravel-websockets 软件包 启动 websocket 监听 主要流程 创建两个页面 建立 socket 连接 手机端扫码登陆 ...
随机推荐
- stm32 定时器 通用定时器
STM32F10xxx 2个基本定时器(TIM6.TIM7) 4个通用定时器(TIM2. TIM3. TIM4和TIM5) 2个高级定时器(TIM1.TIM8) 每个定时器都是完全独立的,没有互相共享 ...
- Android写入文件电脑看不到
原因是因为没有刷新,写入文件后执行以下代码即可. 根目录路径: File newfile = new File(Environment.getExternalStorageDirectory() + ...
- xposed获取类的属性成员
XposedBridge.log("开始获取属性:"); Field[] fields = param.thisObject.getClass().getDeclaredField ...
- char str = '1.2.';问题
偶然看到群里老哥问道这个问题 #include <iostream> using namespace std; int main() { char str = '1.2.'; ; } 什么 ...
- 1.volatile关键字 内存可见性
Java JUC 简介 在 Java 5.0 提供了 java.util.concurrent (简称JUC )包,在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括 ...
- js 定时器(setTimeout/setInterval)出现变量未定义(xxx is not defined) 的解决方法
首先声明本人资质尚浅,如有错误,欢迎指正.共同提高. ------------------------------------------------------------------------- ...
- xtrabackup数据库备份工具
下来我来介绍一下更强大的备份工具:xtrabackup xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有开源,免费,支持在线热备,备份恢复速 ...
- 3.Hbase数据模型
3.1.Hbase数据模型: 概念视图: 物理视图 Hbase数据在存储系统中是以列族来体现的[Column Family],任何时候可以随意的添加一列到已经存在的列族中 空的单元格在表中不做存储也不 ...
- synchronized 和 Lock 有什么区别?(未完成)
synchronized 和 Lock 有什么区别?(未完成)
- Java基础 线程的通信的三个方法/ 交替数数线程 / 生产者&消费者线程问题
线程通讯笔记: /** 线程通信 三个方法: * wait(): 调用该方法 是该调用的方法的线程释放共享资源的锁,进入等待状态,直至被唤醒 * notify() : 可以唤醒队列中的第一个等待同一共 ...