Touch-Events

移动端事件穿透的原理与解决方案

非 Y 不嫁゛ 提交于 2020-08-10 06:23:39
移动设备的流行,带动了移动互联网的快速发展,很多开发者开始进入移动开发领域。目前市面上主流的移动设备一般都使用触摸屏,触摸屏所使用的触摸事件模型与传统网页的鼠标事件模型有所区别,这种差异往往使初涉移动端的开发工程师陷入困境,事件穿透问题便是其中一个,本文将带你了解事件穿透及如何在实际项目中选择合适的方案解决事件穿透问题。 产生的原因 当今,主流的移动设备一般都使用触摸屏,Web 应用程序可以使用触摸事件(Touch Events)直接处理基于触摸的输入,或者应用程序可以使用可解释的鼠标事件以处理应用程序的输入。使用鼠标事件的缺点是它们不支持并发用户输入,而触摸事件支持多个同时输入(可能在触摸面上的不同位置),从而增强用户体验。 触摸事件有以下事件类型: touchstart:当触摸点放置在触摸面上时触发。 touchmove:当触摸点沿触摸表面移动时触发。 touchend:当触摸点从触摸表面移除时触发。 touchcancel:当触摸点以实现特定的方式中断(例如,创建的触摸点太多)时触发。 在很多情况下,触摸事件和鼠标事件会同时被触发(目的是让没有对触摸设备优化的代码仍然可以在触摸设备上正常工作)。如下代码: document.addEventListener('touchstart', () => { console.log('touchstart') }) document

Pointer Event Api-整合鼠标事件、触摸和触控笔事件

寵の児 提交于 2020-08-08 07:41:26
Pointer Events API 是Hmtl5的事件规范之一,它主要目的是用来将鼠标(Mouse)、触摸(touch)和触控笔(pen)三种事件整合为统一的API。 Pointer Event Pointer指可以在屏幕上反馈一个指定坐标的输入设备。Pointer Event事件和Touch Event API对应的触摸事件类似,它继承扩展了Touch Event,因此拥有Touch Event的常用属性。Pointer属性如下图: 说明: pointerId:代表每一个独立的Pointer。根据id,我们可以很轻松的实现多点触控应用。 width/height:Mouse Event在屏幕上只能覆盖一个点的位置,但是一个Pointer可能覆盖一个更大的区域。 isPrimary:当有多个Pointer被检测到的时候(比如多点触摸),对每一种类型的Pointer会存在一个Primary Poiter。只有Primary Poiter会产生与之对应的Mouse Event。 Pointer Event API核心事件: Mouse events, pointer events和touch events 对照表 Pointer API 的好处 Poiter API 整合了鼠标、触摸和触控笔的输入,使得我们无需对各种类型的事件区分对待。 目前不论是web还是本地应用都被设计成跨终端

Chrome浏览器语音自动播放功能

拥有回忆 提交于 2020-01-06 15:56:48
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Chrome浏览器为了屏蔽带声音的骚扰广告,从66版本后不再允许自动播放语音,我做的项目需要实时语音提示报警信息,网上搜索了好久都说不再支持自动播放,知道碰到一个大神提供建议设置Chrome浏览器允许声音自动播放: 在chrome地址栏中输入 chrome://flags/ 再搜索 Autoplay policy 再在右侧的选项中设置为 No user gesture is required 即可 如果是76以上版本chrome设置不同: 搜索 Touch Events API 改成 Automatic 设置后就可以使用Chrome自带的文字转语音工具了: let u = new SpeechSynthesisUtterance(); u.text="说点啥呢,点个赞再走呗" u.lang='zh' u.rate='1.2' speechSynthesis.speak(u) 来源: oschina 链接: https://my.oschina.net/u/200350/blog/3151284