bug收集:专门解决与收集bug的网站 网址:www.bugshouji.com touch 事件的来历 2007 苹果推出iphone,浏览器网页在iphone上显示时字体特别小,根本看不清楚...苹果的解决方案: 方案一:双指进行缩放 方案二:在屏幕上双击进行放大(单击300ms后,再单击才算双击),造成了,移动端点击事件,300ms 延迟的问题 解决方案,就是使用touch事件来替代 移动端新增...touch事件 --- 只能使用现代事件进行添加 touchstart: 触摸开始 touchmove: 触摸移动 touchend: 触摸结束 touchcancel:touch 取消,如来电等...type="text/javascript"> document.addEventListener('touchstart', function () { console.log( 'touchstart...点击穿透现象的情况: 1) 蒙层问题 蒙层的关闭按钮绑定的是touch事件,而按钮下面元素绑定的是click事件,touch事件触发后,蒙层消失,300ms后这个点的click事件触发。
解决方案 监听事件禁止滑动 移动端触摸事件有三个,分别定义为 touchstart :手指放在一个DOM元素上。 touchmove :手指拖曳一个DOM元素。...iOS 中的 safari,为了实现双击缩放操作,在单击 300ms 之后,如果未进行第二次点击,则执行 click 单击操作。也就是说来判断用户行为是否为双击产生的。...原理与解决方案 解决方案一:使用 touchstart 替换 click 前面已经介绍了,移动设备不仅支持点击,还支持几个触摸事件。那么我们现在基本思路就是用 touch 事件代替click 事件。...="handleTouchstart()">点击 开源解决方案中,也是既提供了 click 事件,又提供了touchstart 事件。...如果将 click 替换成 touchstart 会怎样? 事件触发顺序: touchstart, touchmove, touchend, click。
监听事件禁止滑动 移动端触摸事件有三个,分别定义为 1. touchstart :手指放在一个DOM元素上。 2. touchmove :手指拖曳一个DOM元素。...iOS 中的 safari,为了实现双击缩放操作,在单击 300ms 之后,如果未进行第二次点击,则执行 click 单击操作。也就是说来判断用户行为是否为双击产生的。...原理与解决方案 解决方案一:使用 touchstart 替换 click 前面已经介绍了,移动设备不仅支持点击,还支持几个触摸事件。那么我们现在基本思路就是用 touch 事件代替click 事件。...="handleTouchstart()">点击 开源解决方案中,也是既提供了 click 事件,又提供了touchstart 事件。...如果将 click 替换成 touchstart 会怎样? 事件触发顺序: touchstart, touchmove, touchend, click。
监听事件禁止滑动 移动端触摸事件有三个,分别定义为 1. touchstart :手指放在一个DOM元素上。 2. touchmove :手指拖曳一个DOM元素。...原理与解决方案 解决方案一:使用 touchstart 替换 click 前面已经介绍了,移动设备不仅支持点击,还支持几个触摸事件。那么我们现在基本思路就是用 touch 事件代替click 事件。...="handleTouchstart()">点击 开源解决方案中,也是既提供了 click 事件,又提供了touchstart 事件。...如 vant 中的 button 组件 那么,是否可以将 click 事件全部替换成 touchstart 呢?为什么开源框架还会给出 click 事件呢?...如果将 click 替换成 touchstart 会怎样? 事件触发顺序: touchstart, touchmove, touchend, click。
移动端click事件300ms的延迟现象的原因: 在最早iphone的safar浏览器中,为了实现触屏中双击放大效果,当用户点击屏幕时后会判断在300ms内是否有第二次点击,如果有,就理解成双击,若没有就是单击...当你点击移动设备的屏幕时, 可以分解成多个事件,顺序依次为:touchstart — touchmove — touchend — click, 这些事件是按顺序依次触发的....解决延迟的思路: touchstart touchend是没有延迟的,可以在touchend时触发用户想要在click时触发的事件. zepto 解决click延迟的原理: 自定义tap事件,当用户点击元素时...,touchend事件先发生, 当touchend事件冒泡到document时触发目标元素绑定的tap事件 简单模拟zepto tap的实现方式(这里忽略touchstart与touchend的点击位置的判断...如何解决穿透: 方法一:直接将上层元素的tap事件换成click事件(会出现300ms的延迟触发事件) 方法二:在click事件触发前阻止它,如在touchend的事件中使用e.preventDefault
监听事件禁止滑动 移动端触摸事件有三个,分别定义为 1. touchstart :手指放在一个DOM元素上。 2. touchmove :手指拖曳一个DOM元素。...原理与解决方案 解决方案一:使用 touchstart 替换 click 前面已经介绍了,移动设备不仅支持点击,还支持几个触摸事件。那么我们现在基本思路就是用 touch 事件代替click 事件。...@touchstart="handleTouchstart()">点击 复制代码 开源解决方案中,也是既提供了 click 事件,又提供了touchstart 事件。...如 vant 中的 button 组件 那么,是否可以将 click 事件全部替换成 touchstart 呢?为什么开源框架还会给出 click 事件呢?...如果将 click 替换成 touchstart会怎样? 事件触发顺序: touchstart, touchmove, touchend, click。
然而,由于这种双击缩放的操作,在用户第一次单击页面元素时,浏览器并不知道用户是想做双击缩放操作还是普通的单击操作。...全面的移动开发者与单击事件延迟战争拉开了序幕。鉴于 iPhone 的巨大成功,其他浏览器厂商也都快步跟进纷纷效仿了 iPhone Safari 浏览器的做法。...于是,单击事件延迟成为了移动开发者不得不面对的痛。...根据规范,CSS 属性 touch-action 用于设置触摸屏用户如何操纵元素的区域(例如,浏览器内置的缩放功能)。...FastClick 的实现基础建立于 touchstart ,touchmove 或者 touchend 事件中的任意一个调用 event.preventDefault,mouse 事件 以及 click
事件类型 应用场景 事件绑定 点击穿透 解决方法 页面跳转的选择 浏览器默认行为 为什么要阻止这些默认行为 如何阻止默认行为 后遗症 灵丹妙药 事件对象属性 touchstart 事件 touchmove...应用场景 touchstart 事件可用于元素触摸的交互,比如页面跳转,标签页切换 touchmove 事件可用于页面的滑动特效,网页游戏,画板 touchend 事件主要跟 touchmove 事件结合使用...如何阻止默认行为 可以给 document 绑定 touchstart 事件,并阻止默认行为,不过需要关闭被动模式。这里推荐创建一个包裹元素,绑定 touchstart 事件并阻止默认行为。...解决问题只需要给目标元素绑定 touchstart 事件并阻止事件冒泡,这样当前操作的默认行为仍然可用。...事件对象属性 touch 事件对象中有 3 个非常重要的属性 changedTouches targetTouches touches touchstart 事件 在 touchstart 事件中 changedTouches
对于 AppID 选项,如果已经有了小程序账号,可以在账号后台找到 AppID 并填写上;若还没有注册小程序账号,可以直接在「或使用测试号:」后面单击「小程序」,就会自动填好。...事件绑定和处理 在小程序内,除了标准 HTML5 中遇见的 touchstart 等事件外,增加了 tap 类的事件,主要包括以下几种: 事件名称 说明 tap 手指触摸后马上离开 longpress...rpx 小程序 WXSS 中使用了 rpx 这个长度单位,可以用于表示元素的宽高和边距、字体的大小等。对于习惯使用 px 或者 rem 来做页面的前端来说,这可能让人有点迷糊。...对于 iPhone 6 来说,因为 dpr 为 2,所以 iPhone 的宽度为 375px,这样在 iPhone 6 上使用 rpx 的话,换算关系为 2rpx=1px。...iPhone 6 1rpx = 0.5px 1px = 2rpx iPhone 6 Plus 1rpx = 0.552px 1px = 1.81rpx 看起来很麻烦,但是只需要按照官方建议,让设计师按照
一定是先要触发touchstart事件,再有可能触发 touchmove 事件。 touchmove 事件的target 与最先触发的 touchstart 的 target 保持一致。...当用户产生的触点个数超过了设备支持的个数,从而导致 TouchList 中最早的 Touch对象被取消 touchcancel 事件一般用于保存现场数据。比如:正在玩游戏,如果发生了 。...return this; } }, /*单击事件: * 为了规避click的300ms的延迟,自定义一个单击事件...5.1 tap类事件 触碰事件,我目前还不知道它和touch的区别,一般用于代替click事件,有tap longTap singleTap doubleTap四种之分。...封装了再触摸设备上触发tap– 和 swipe– 相关事件,也适用于所有的touch(iOS, Android)和pointer事件(Windows Phone)。
(区分webkit 和 winphone) 当用户手指放在移动设备在屏幕上滑动会触发的touch事件 以下支持webkit 描述 touchstart 当手指触碰屏幕时候发生。...以下是历史原因,来源其他人的分享: 2007年苹果发布首款iphone上IOS系统搭载的safari为了将适用于PC端上大屏幕的网页能比较好的展示在手机端上,使用了双击缩放 (double tap to...,所以,捕获第一次单击后,浏览器会先Hold一段时间t,如果在t时间区间里用户未进行下一次点击,则浏览器会做单击跳转链接的处理,如果t时间里用户进 行了第二次单击操作,则浏览器会禁止跳转,转而进行对该部分区域页面的缩放操作...造成的后果用户纯粹单击页面,页面需要过一段时间才响应,给用户慢体验感觉,对于web开发者来说 是,页面js捕获click事件的回调函数处理,需要300ms后才生效,也就间接导致影响其他业务逻辑的处理。.../), iphone = !
一定是先要触发touchstart事件,再有可能触发 touchmove 事件。 touchmove 事件的target 与最先触发的 touchstart 的 target 保持一致。...return this; } }, /*单击事件: * 为了规避click的300ms的延迟,自定义一个单击事件...* 触发时间: * 当抬起手指的时候触发 * 需要判断手指落下和手指抬起的事件间隔,如果小于500ms表示单击时间。...5.1 tap类事件 触碰事件,我目前还不知道它和touch的区别,一般用于代替click事件,有tap longTap singleTap doubleTap四种之分。...封装了再触摸设备上触发tap– 和 swipe– 相关事件,也适用于所有的touch(iOS, Android)和pointer事件(Windows Phone)。
完成移动端的开发项目之后,发现谷歌自带的调试器似乎没有什么太大的作用,整天借同事的苹果手机测bug,尽管同事不厌其烦,但还是觉得这iPhone系列适配问题适配到想逃逃逃,好在项目已经顺利完成,测试通过,..., initial-scale=0.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" /> 但是,还是会出现不适配的问题哦,那就在原有页面的基础上...问题五:手机端 click 事件会有大约 300ms 的延迟 原因:手机端事件如下 touchstart –> touchmove –> touchend or touchcancel –> click...因为在touch事件触发之后,浏览器要判断用户是否会做出双击屏幕的操作,所以会等待300ms来判断,再做出是否触发click事件的处理,所以就会有300ms的延迟 解决方法:使用touch事件来代替click...事件,如 zepto.js 的tap事件和fastClick,注:每次我都使用fastclick解决,这个插件最良心了,都有相应的事件可以代替click事件解决这个问题,大力推荐。
web端事件有 onload 页面中所有标签,文档,图片等资源加载完毕后触发 onclick 鼠标单击事件 ondbclick 鼠标双击事件 onmousedown 鼠标按下 onmouseup...click 单击事件 类似于pc端click,移动端中,连续click触发有200ms-300ms的延迟 touch 触摸类事件 touchstart 手指触摸到屏幕触发 touchmove...一般用于代替click事件 tap 手指碰一下屏幕触发 longTap 手指长按屏幕触发 singleTap 手指碰一下屏幕触发 doubleTap 手指双击屏幕触发 swip滑动类事件...可以改用beforeClose事件 回调函数有两个参数,第一个判断点击的是确认按钮还是取消按钮。第二个感觉是可以关闭模态框 移动端消息推送 消息推送跟设备走还是跟人走?...iPhone的UIWebView(iOS2.0-12.0 ),WKWebView(iOS8.0+,macOS10.10+),Android的WebView WebView可以理解为手机应用中运行和展示网页的界面和接口
300ms点击延迟 移动端的300ms点击延迟是因为移动端可以进行双击缩放的操作,因此浏览器在click之后要等待300ms,看用户有没有下一次点击,也就是判断这次操作是单击还是双击。...如果通过监听touchstart事件来替代click事件的话,会导致一些问题:touchstart是手指触摸屏幕就触发,有时候用户只是想滑动屏幕,却触发了touchstart事件;当页面上有两个元素A和...B,A元素在B元素上重叠放置,如果A元素的touchstart事件绑定的回调函数是隐藏A元素自身,那么当点击A元素后A元素会消失,事件的触发顺序是touchstart -> touchend -> click...,如果在300ms内没有第二次点击便会触发click事件,此时由于A元素消失,那么click事件便落到了B元素上,如果B元素是个链接或者绑定了click事件,那么B元素的默认行为或者是绑定的事件回调便会意外地触发... touch-action CSS的touch-action属性用于设置触摸屏用户如何操纵元素的区域
今天为大家介绍的事件主要是触摸事件:touchstart、touchmove和touchend。...一开始触摸事件touchstart、touchmove和touchend是iOS版Safari浏览器为了向开发人员传达一些信息新添加的事件。...在iPhone 3Gs发布的时候,其自带的移动Safari浏览器就提供了一些与触摸(touch)操作相关的新事件。随后,Android上的浏览器也实现了相同的事件。...下面具体说明: touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。 touchmove事件:当手指在屏幕上滑动的时候连续地触发。...除了常见的DOM属性,触摸事件还包含下面三个用于跟踪触摸的属性。 touches:表示当前跟踪的触摸操作的touch对象的数组。
(区分webkit 和 winphone) 当用户手指放在移动设备在屏幕上滑动会触发的touch事件 以下支持webkit 以下支持winphone 8 touchstart——当手指触碰屏幕时候发生。...以下是历史原因: 2007年苹果发布首款iphone上IOS系统搭载的safari为了将适用于PC端上大屏幕的网页能比较好的展示在手机端上,使用了双击缩放(double tap to zoom)的方案,...原因就出在浏览器需要如何判断快速点击上,当用户在屏幕上单击某一个元素时候,例如跳转链接,此处浏览器会先捕获该次单击,但浏览器不能决定用户是单纯要点击链接还是要双击该部分区域进行缩放操作,所以,捕获第一次单击后...,浏览器会先Hold一段时间t,如果在t时间区间里用户未进行下一次点击,则浏览器会做单击跳转链接的处理,如果t时间里用户进行了第二次单击操作,则浏览器会禁止跳转,转而进行对该部分区域页面的缩放操作。...造成的后果用户纯粹单击页面,页面需要过一段时间才响应,给用户慢体验感觉,对于web开发者来说是,页面js捕获click事件的回调函数处理,需要300ms后才生效,也就间接导致影响其他业务逻辑的处理。
手势事件(目前只是一个概念,使用的时候需封装模拟) 使用到的是移动端的Chrome浏览器,本文只对该浏览器进行调试,其他浏览器暂未考虑到 一、事件定义及分类 1. click事件 单击事件,类似于PC端的...click,但在移动端中,连续click的触发有200ms ~ 300ms的延迟 2. touch类事件 触摸事件,有touchstart touchmove touchend touchcancel...,突然alert了一下,或者系统中其他打断了touch的行为,则可以触发该事件 3. tap类事件 触碰事件,我目前还不知道它和touch的区别,一般用于代替click事件,有tap longTap singleTap...2) 查看触发的事件对象 简单地修改,将事件监听中第三个参数置为true,输出完整的事件对象 addEvent(one, 'tap click touchstart touchmove touchend...,提起一根,会刷新一次全局 touch,重新触发第一根手指的touchstart) 9、提起第一根手指,触发touchend 还有其他事件有待发觉... gestureend
,可以隐藏浏览器的地址栏和下面的toolbar; 第二个meta标签表示:强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览; 第三个meta标签也是iphone...的私有标签,它指定的iphone中safari顶端的状态条的样式,其值有三个:default、black、black-translucent。...ios的safari的click事件在短按屏幕时会有明显延迟(相对用户手离开屏幕那一刻大约300ms),因此建议采用 touchstart 事件。...或者是说使用封装的 tap 事件来代替click 事件,所谓的 tap 事件由 touchstart 事件 + touchmove 判断 + touchend 事件封装组成。...是否处于全屏状态 touch事件 (iOS, Android 2.2+): touchstart, touchmove, touchend, touchcancel gesture事件 (Apple only
领取专属 10元无门槛券
手把手带您无忧上云