关于移动端的Click事件

在移动端执行Click事件,通常情况出现有300毫秒的延迟,为防止这种不必要的延迟效果,我们可以换种方式来实现,同样达到快速执行Click事件的效果。

先了解一下移动端Click的执行顺序: touchstart - > touchmove -> touchend -> mouseover ->mousemove ->click, 从这个执行顺序可以看出,走完这个过程,300毫秒到click响应不足为奇了。

既然如此,我们完全可以通过touchstart来取代click事件,另外,也可以在click事件里,对event的type来判断来快速执行响应。

IOS阻止默认click事件原理,需要主要的是:

(1)只是针对IOS,其它平台不必阻止;

(2)在touchend时就看手指移动情况来觉得该阻止click或者是取消touch事件;

  (3)只有event类型为click时才有必要阻止。

在touchend的时候与touchstart时比较时间,位置,以区别是否执行“按下”的操作。值得一提的是,Zepto的tap事件,已经很好的为我们解决了这个问题。

时间: 2024-10-11 02:01:15

关于移动端的Click事件的相关文章

vue.js下移动端绑定click事件失效,pc端正常的问题

原因可能是 我在项目中使用到了 better-scroll,默认它会阻止 touch 事件.所以在配置中需要加上 click: true 即可. 例如: mounted () { this.scroll = new BScroll(this.$refs.wrapper, { mouseWheel: true, click: true, tap: true }) } 原文地址:https://www.cnblogs.com/hukuangjie/p/11399934.html

移动端click事件延时

在移动端使用click事件会产生300ms的延迟 问题的产生: 移动端存在双击放大的问题,所以在移动端点击事件发生时,为了判断用户的行为(到底是要双击还是要点击),浏览器通常会等待300ms,如果300ms之内,用户没有再次点击,则判定为点击事件,否则判定为双击缩放. 为什么要解决: 线代web对性能的极致追求,对用户体验的高标准,让着300ms的卡顿变得难以接受 如何解决: 1.user-scalable:no  禁止缩放——没有缩放就不存在双击,也就没有点击延迟 2.指针事件:CSS:-ms

移动端click事件延迟300ms的原因以及解决办法

这要追溯至 2007 年初.苹果公司在发布首款 iPhone 前夕,遇到一个问题 —— 当时的网站都是为大屏幕设备所设计的.于是苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点的问题.这当中最出名的,当属双击缩放(double tap to zoom).这也是会有上述 300 毫秒延迟的主要原因. 当用户一次点击屏幕之后,浏览器并不能立刻判断用户是要进行双击缩放,还是想要进行单击操作.因此,iOS Safari 就等待 300 毫秒,以判断用户是否再次点击了屏幕. 于是,

移动端click事件延迟300ms的原因以及解决办法[转载]

原文: 这要追溯至 2007 年初.苹果公司在发布首款 iPhone 前夕,遇到一个问题 —— 当时的网站都是为大屏幕设备所设计的.于是苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点的问题.这当中最出名的,当属双击缩放(double tap to zoom).这也是会有上述 300 毫秒延迟的主要原因. 当用户一次点击屏幕之后,浏览器并不能立刻判断用户是要进行双击缩放,还是想要进行单击操作.因此,iOS Safari 就等待 300 毫秒,以判断用户是否再次点击了屏幕.

移动端开发用touch事件还是click事件

前端开发现在包含了跨浏览器,跨平台(不同操作系统)和跨设备(不同尺寸的设备)开发. 在移动开发的过程中,到底选取touch事件还是click事件?对了,请不要鄙视click,click在移动端开发用着也是不错的. 首先,我先说一下touch事件在开发中存在的两个问题: 1.touch事件在某些场景下存在点击穿透的问题. 2.touchstart事件时触摸屏幕就会触发,touchend事件是手指离开屏幕就会触发,而有时候,我们仅仅是只想滑动屏幕,却会触发这两个事件. 1问题的原因:移动端事件触发的

移动端touch事件影响click事件以及在touchmove添加preventDefault导致页面无法滚动的解决方法

这两天自己在写一个手机网页,用到了触屏滑动的特效,就是往右滑动的时候左侧隐藏的菜单从左边划出来. 做完之后在手机原生浏览器中运行正常,但在QQ和微信中打开,发现touchmove只会触发一次,而且touchend也经常不触发. 之后百度了一下这个问题,原因是 主要是由于200ms超时导致内核不一定会一直处理touchmove事件,一旦超时会将后续所有的事件转交给UI处理,导致touchmove不会一直触发. 为了解决开发者需要,建议开发者在touchstart时调用event.preventDe

百度地图JS API移动端,phonegap 自定义覆盖物Click事件无法执行 的 bug 解决方法

当你为自定义覆盖物添加了click事件后,你会发现在移动端是无论如何也触发不了的,这算是一个BUG. 最近我在为我的地图APP开发第二版,在为一个覆盖物添加行为事被困扰到了,自定义覆盖物的click事件竟然无法在iPhone端触发,以及百度地图JS API里面的开源库涉及到自定义覆盖物click事件的均无效. 我为这个BUG烦恼了很久,直到今天,在QQ群里网友(在此要先感谢这位网友mooring)告诉了我解决方法:iPhone上的自定义覆盖物事件默认会触发map的click事件,如果map定义了

js移动端click事件延迟

今天做一个移动端网站,一块内容中包含两个js效果,一直以为是冲突,导致只能使用一个,后面发现是click事件延迟引起,解决代码如下:(function(){        var isTouch = ('ontouchstart' in document.documentElement) ? 'touchstart' : 'click';    if(!$.fn.quickOn){            $.fn.quickOn= function(){                argum

移动端web,tap与click事件

一.tap与click的区别 两者都会在点击时系统自动触发,但是在手机WEB端,click会有 200~300 ms.延迟来自判断双击和长按,因为只有默认等待时间结束以确定没有后续动作发生时,才会触发click事件.所以触摸事件反应更快,体验更好.singleTap和doubleTap 分别代表单次点击和双次点击.tap封装了touchstart.touchmove.touchend三个事件的处理(touchstart之后如果有产生touchmove则取消此次tap事件的产生) click则只是