首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS中的touch事件与canvas绘图

不管有多少个手指放在了屏幕上,只要再触摸屏幕就会触发 touchmove:当手指在屏幕上滑动的时候触发该是事件,在这期间可以通过event.preventDefault()来阻止滚动 touchend...changeTouches:表示从上一次触摸以来,发生了改变的touch对象的数组。 通过一个例子来区分一触摸事件中的这三个属性: 用一个手指接触屏幕,触发事件,此时这三个属性有相同的值。...因此, 如果有元素触摸过程中可能被移除, 最佳实践是将触摸事件的监听器绑定到这个元素本身, 防止元素被移除后, 无法再从它的上一级元素上侦测到从该元素冒泡的事件....movementY 返回鼠标指针相对于上一个mousemove事件位置的垂直坐标 target 返回与触发鼠标事件的元素相关的元素 which 返回触发鼠标事件时按鼠标按钮 altKey 返回触发鼠标事件时是否按...ALT键 ctrlKey 返回触发鼠标事件时是否按CTRL键 shiftKey 返回触发事件时是否按SHIFT键 metaKey 返回触发事件时是否按META键 Touch对象相比screenX

7.3K41

JavaScript 编程精解 中文第三版 十五、处理事件

第 18 章将展示如何实现。 指针事件 目前有两种广泛使用的方式,用于指向屏幕上的东西:鼠标(包括类似鼠标的设备,如触摸轨迹球)触摸屏。 它们产生不同类型的事件。...鼠标点击 点击鼠标按键会触发一系列事件。"mousedown"事件"mouseup"事件类似于"keydown""keyup"事件,当鼠标按钮按或释放时触发。...触摸事件 我们使用的图形浏览器的风格,是考虑到鼠标界面的情况而设计的,那个时候触摸屏非常罕见。 为了使网络早期的触摸屏手机上“工作”,某种程度上,这些设备的浏览器假装触摸事件鼠标事件。...鼠标事件只涵盖了简单情况触摸交互 - 如果您为按钮添加"click"处理器,触摸用户仍然可以使用它。 但是像上一个示例中的可调整大小的栏触摸屏上不起作用。 触摸交互触发了特定的事件类型。...按鼠标按钮时,会触发mousedown、mouseupclick事件。移动鼠标触发mousemove事件

5.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

「移动端」touch事件,touchEvent对象

一、touch事件类型 touchstart - 手指触摸屏幕,元素上按触发 touchmove - 手指移动,元素上按之后屏幕上任意移动 tounchend - 手指在元素上按之后,屏幕任意位置抬起时触发...touchcancel - 触摸过程中被系统取消时触发 (很少使用) touch 事件与mouse事件区别: touchstart:手指按,mousedown:鼠标。...identifier - 触摸点的唯一标识 id。 target - 触摸的 DOM 节点。 二、触摸分类 很多情况触摸事件会分为两种,单点触发多点触发。...多点触发:多个手指同时触摸屏幕,进行旋转、缩放、放大、拖拽等操作。 很多情况触摸事件鼠标事件会同时触发,目的是为了pc端运行的时候,没有触摸设备可以使用鼠标代替。...如果可以支持触摸事件,则把鼠标事件使用event.preventDefault()阻止事件发生,此时鼠标事件将失效。如果鼠标触摸事件都支持时,还有添加多个触摸事件时,具体的执行顺序是怎么的?

1.1K30

「移动端」touch事件,touchEvent对象

一、touch事件类型 touchstart - 手指触摸屏幕,元素上按触发 touchmove - 手指移动,元素上按之后屏幕上任意移动 tounchend - 手指在元素上按之后,屏幕任意位置抬起时触发...touchcancel - 触摸过程中被系统取消时触发 (很少使用) touch 事件与mouse事件区别: touchstart:手指按,mousedown:鼠标。...identifier - 触摸点的唯一标识 id。 target - 触摸的 DOM 节点。 二、触摸分类 很多情况触摸事件会分为两种,单点触发多点触发。...多点触发:多个手指同时触摸屏幕,进行旋转、缩放、放大、拖拽等操作。 很多情况触摸事件鼠标事件会同时触发,目的是为了pc端运行的时候,没有触摸设备可以使用鼠标代替。...如果可以支持触摸事件,则把鼠标事件使用event.preventDefault()阻止事件发生,此时鼠标事件将失效。如果鼠标触摸事件都支持时,还有添加多个触摸事件时,具体的执行顺序是怎么的?

1.8K20

「移动端」touch事件,touchEvent对象

一、touch事件类型 touchstart - 手指触摸屏幕,元素上按触发 touchmove - 手指移动,元素上按之后屏幕上任意移动 tounchend - 手指在元素上按之后,屏幕任意位置抬起时触发...touchcancel - 触摸过程中被系统取消时触发 (很少使用) touch 事件与mouse事件区别: touchstart:手指按,mousedown:鼠标。...identifier - 触摸点的唯一标识 id。 target - 触摸的 DOM 节点。 二、触摸分类 很多情况触摸事件会分为两种,单点触发多点触发。...多点触发:多个手指同时触摸屏幕,进行旋转、缩放、放大、拖拽等操作。 很多情况触摸事件鼠标事件会同时触发,目的是为了pc端运行的时候,没有触摸设备可以使用鼠标代替。...如果可以支持触摸事件,则把鼠标事件使用event.preventDefault()阻止事件发生,此时鼠标事件将失效。如果鼠标触摸事件都支持时,还有添加多个触摸事件时,具体的执行顺序是怎么的?

98930

touch事件,touchEvent对象

一、touch事件类型 touchstart - 手指触摸屏幕,元素上按触发 touchmove - 手指移动,元素上按之后屏幕上任意移动 tounchend - 手指在元素上按之后,屏幕任意位置抬起时触发...touchcancel - 触摸过程中被系统取消时触发 (很少使用) touch 事件与mouse事件区别: touchstart:手指按,mousedown:鼠标。...identifier - 触摸点的唯一标识 id。 target - 触摸的 DOM 节点。 二、触摸分类 很多情况触摸事件会分为两种,单点触发多点触发。...多点触发:多个手指同时触摸屏幕,进行旋转、缩放、放大、拖拽等操作。 很多情况触摸事件鼠标事件会同时触发,目的是为了pc端运行的时候,没有触摸设备可以使用鼠标代替。...如果可以支持触摸事件,则把鼠标事件使用event.preventDefault()阻止事件发生,此时鼠标事件将失效。如果鼠标触摸事件都支持时,还有添加多个触摸事件时,具体的执行顺序是怎么的?

90030

cocos creator鼠标键盘事件总结

node.on('mousedown', function (event) { console.log('Mouse down'); }, this); 鼠标事件类型事件对象 鼠标事件桌面平台才会触发...,系统提供的事件类型如下: 枚举对象定义 对应的事件事件触发的时机 cc.Node.EventType.MOUSE_DOWN 'mousedown' 当鼠标目标节点区域按触发一次 cc.Node.EventType.MOUSE_ENTER...或 cc.Event.EventMouse.BUTTON_RIGHT 或 cc.Event.EventMouse.BUTTON_MIDDLE 触摸事件类型事件对象 触摸事件移动平台桌面平台都会触发...,这样做的目的是为了更好得服务开发者桌面平台调试,只需要监听触摸事件即可同时响应移动平台的触摸事件桌面端的鼠标事件。...紧接着A节点会收到事件,由于C节点完整处在A节点中,所以注册A节点上的事件监听器都将收到触摸事件。以上的过程解释了事件冒泡的过程根据节点区域来判断是否分发事件的逻辑。

2.2K51

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

目前市面上主流的移动设备一般都使用触摸屏,触摸屏所使用的触摸事件模型与传统网页的鼠标事件模型有所区别,这种差异往往使初涉移动端的开发工程师陷入困境,事件穿透问题便是其中一个,本文将带你了解事件穿透及如何在实际项目中选择合适的方案解决事件穿透问题...使用鼠标事件的缺点是它们不支持并发用户输入,而触摸事件支持多个同时输入(可能在触摸面上的不同位置),从而增强用户体验。 触摸事件有以下事件类型: touchstart:当触摸点放置触摸面上时触发。...很多情况触摸事件鼠标事件会同时被触发(目的是让没有对触摸设备优化的代码仍然可以触摸设备上正常工作)。...正是由于这种 click 事件的滞后性设计为事件穿透(点击穿透)埋下了伏笔。 什么是事件穿透 事件穿透是指触发某个目标元素的触摸事件时,会同时触发该目标元素相同位置中其他元素的鼠标点击事件。...touchstart 触摸事件并立即隐藏掉自身,之后应该按先后顺序触发 mask 元素的 touchend click 事件

1.4K20

WPF 通过 InputManager 模拟调度触摸事件

本文告诉大家如何模拟调度一个触摸事件 本文的内容属于没有任何官方文档的支持的内容,以下是我看 WPF 源代码了解到的用法 输入管理里面可以通过 System.Windows.Input.InputManager.Current...{ _lastEventArgs = e; } private TouchEventArgs _lastEventArgs; 下面尝试鼠标的时候触发这个事件...,可以看到鼠标点击的时候同样触发触摸事件 那如果想要模拟触发触摸移动的事件呢?...上面图片是测试工具 ManipulationDemo 的显示,这个工具会在事件触发的时候修改对应事件颜色,也就是鼠标点击的时候触发触摸的按移动抬起 用这个方法就可以从路由事件这一层调度事件 上面的代码放在...ProcessInput 一样的效果 本文其实是补充 WPF 触摸事件 的后半部分,从 WPF 触摸到路由事件,是如何触摸事件让对应的元素触发 本文的方法仅是模拟事件触发,如果想要修改触摸的点的坐标等

76030

现代浏览器内部机制(四): 换个角度看事件

鼠标滚轮的滚动是一种输入事件触摸或者鼠标滑过也是一种输入事件。...当用户的交互行为发生时(比如触摸点击屏幕),浏览器进程会第一个感知到这个用户行为,但也仅仅是感知而已,因为浏览器 tab 的内容都是由渲染进程全盘掌控着。...于是浏览器进程第一时间将用户事件的类型坐标发送给渲染进程。渲染进程通过查找并调用对应的事件处理函数来处理这个用户输入事件。 ?...对于输入事件来说,主流的触摸屏会以每秒 60 到 120 次的频率向主线程传递触摸事件,大多数的鼠标事件都被以每秒 100 次的频率传递给主线程。输入事件的保真度是普遍高于主流屏幕的刷新能力的。...如果一个持续不断的事件(比如 touchmove)一秒内被传递给了主线程 120 次,这就会触发大量的 hit test JavaScript 的执行,这么一对比,每秒 60 次的屏幕刷新速率就显得太慢了

96920

移动端页面如何优雅的适配各种屏幕,包括PC端

本文为Varlet组件库源码主题阅读系列第八篇,读完本篇,可以了解到移动端页面如何适配各种尺寸的屏幕,包括pc端,另外如何触摸事件转换成鼠标事件。...这个方法首先根据鼠标事件的类型设置了initiated变量,记录鼠标的按状态,如果是鼠标移动事件鼠标没有按,那么个方法会直接返回,因为touch事件都需要先按才会触发,然后调用了isUpdateTarget...eventTarget.dispatchEvent) 鼠标显然对应的是touchstart,触发的第一个touch事件事件目标肯定也是新的,所以需要更新,理论上不同手指的事件目标是可能不一样的,但是由于桌面端鼠标事件只能有一个...但是桌面端,鼠标触摸点显然只有一个,所以这三个列表其实都是相同的。...最后事件目标上进行了事件的派发。 总结一,整体所做的事情就是监听鼠标的三个事件,然后手动创建对应的touch事件对象,最后事件目标元素上进行派发即可。

1.9K20

WPF 实现自定义的笔迹橡皮擦

我就怕你抄代码的时候,用的容器用的控件默认不是左上角的 在上面代码中,咱默认的 EraserCanvas 是不可见的,而且背景色是透明的。... EraserCanvas 设置背景色是透明的,是为了让 EraserCanvas 可以收到命中测试,也就是收到触摸鼠标消息 界面添加一个按钮,用于点击按钮的时候进入橡皮擦模式,如下面代码...因此 InkCanvas 就不能接收到消息,也就无法进入书写了 EraserCanvas 监听输入的事件,如下面代码监听了鼠标事件。...事件,这个事件将会在笔迹被擦到的时候触发,这个事件就是咱的核心逻辑了 鼠标移动的时候,需要给 IncrementalStrokeHitTester 加上当前的触摸移动的点,请看代码...鼠标抬起的时候,可以清理一橡皮擦的逻辑。

86820

现代浏览器探秘(part4):事件处理

从浏览器的角度看输入事件 当你听到“输入事件”时,可能只会想到文本框打字或鼠标单击,但从浏览器的角度来看,输入意味着来自用户的所有动作。 鼠标滚轮滚动是输入事件触摸或者鼠标移动也是输入事件。...检查事件是否可取消 想象一页面中有一个框,你希望仅将滚动方向限制为水平滚动。...对于输入来说,典型的触摸屏设备每秒发送60-120次触摸事件,而典型的鼠标每秒发送100次事件。 输入事件具有比屏幕刷新更高的保真度。...如果类似touchmove的连续事件被发送到主线程120次,那么与屏幕刷新的速度相比,它可能会触发过多的命中测试JavaScript的执行。 ?...在这种情况,你可以鼠标事件中使用getCoalescedEvents方法来获取有关这些合并事件的信息。 ? 图9:左侧是平滑的触摸手势路径,右侧是合并限制路径 ?

1.3K20

WPF 触屏事件触发鼠标事件的问题及 DataGrid 误触问题

带有 Preview 前缀的是隧道事件(可视为事件触发),没有的是冒泡事件(可视为事件触发,此处省略)。 那么如何去除触屏事件后连带引发鼠标事件的影响呢?...比如,公司的触摸屏支持 10 点触控,那么这里就是点击 10 左右触发;我自己的一个小触摸屏,支持 5 点触控,这边则是空白处点击 4 触发。...事件,而误触时(点击弹窗取消后空白处点击多次会误触表格)则不会(因为那个只触发鼠标事件); _vm.IsRealTouch = true; } /* 注意:触摸事件之后还会触发鼠标事件 *...真实触摸时会触发 PreviewTouchDown 事件,而误触时(点击弹窗取消后空白处点击多次会误触表格)则不会(因为那个只触发鼠标事件),所以只要在鼠标事件 PreviewMouseDown 中能够判断出是否是触屏操作连带触发的就行了...所以,触摸事件,以及鼠标事件的单纯鼠标触发的情况,都对 IsRealTouch 赋值为 true 即可。

2.6K10

移动端click事件300ms延迟

移动端click 事件延迟300ms 一般情况,如果没有经过特殊处理,移动端浏览器派发点击事件的时候,通常会出现300ms左右的延迟。...,且手指未曾在屏幕上移动(某些浏览器允许移动一个非常小的位移值),且在这个在这个dom上手指离开屏幕,且触摸离开屏幕之间的间隔时间较短(某些浏览器不检测间隔时间,也会触发click)才能触发 上述事件发生顺序...指针事件是一个新的 web 事件系列,相应的规范旨在使用一个单独的事件模型,对所有输入类型,包括鼠标 (mouse)、触摸 (touch)、触控 (stylus) 等,进行统一的处理。...,符合条件的情况,主动触发了click事件,这样避免了浏览器默认的300毫秒等待判断。...为了防止原生的click被触发,这里还通过event.preventDefault()屏蔽了原生的click事件

2.7K21

接上一篇事件详解

鼠标事件:当用户通过鼠标页面操作时触发; click事件:在用户单击鼠标按钮或者按下回车键触发; dblclick事件:在用户双击鼠标按钮时被触发; mousedown事件:在用户按下了任意鼠标按钮时被触发...mouseenter事件鼠标光标从元素外部移动到元素范围之内被触发;这个事件不冒泡; mousemove事件:当鼠标指针元素内部移动时重复地触发。...mouseover事件鼠标指针元素外部,用户将移入另一个元素的边界时触发,感觉mouseenter事件类似; mouseup事件:用户释放鼠标按钮时触发; 页面上所有的元素都支持鼠标事件,除了mouseenter...(主屏幕按钮右侧),-90表示向右旋转的横向模式(主屏幕按钮左侧), 理解移动端的事件触摸与手势事件 有以下几个触摸事件: touchstart: 当手指触摸屏幕时触发,即使是一个手指放在屏幕上也会触发...上面几个事件都属于冒泡事件,我们可以对此进行取消事件,每个触摸的event对象都提供了鼠标中常见的属性; bubbles, cancelable,view,clientX, clientY ,screenX

1.8K60

移动端app开发问题及理解

web端事件有 onload 页面中所有标签,文档,图片等资源加载完毕后触发 onclick 鼠标单击事件 ondbclick 鼠标双击事件 onmousedown 鼠标 onmouseup...onmousewheel 当鼠标滚轮整被滚动时 onscroll 元素滚动条被滚动时 移动端事件有 click 单击事件 类似于pc端click,移动端中,连续click触发有200ms-300ms...的延迟 touch 触摸事件 touchstart 手指触摸到屏幕触发 touchmove 手指在屏幕上移动触发 touchend 手指离开屏幕触发 touchcancel 可由系统进行的触发...,比如手指触摸屏幕时,突然alert了,或者系统中其他打断了touch行为可触发 tap触碰类事件 一般用于代替click事件 tap 手指碰一屏幕触发 longTap 手指长按屏幕触发 singleTap...手指碰一屏幕触发 doubleTap 手指双击屏幕触发 swip滑动类事件 swipe 手指在屏幕上滑动触发 swipeLeft 手指在屏幕上左滑触发 swipeRight 手指在屏幕上右滑触发

3.8K10

Vue 2.x 移动端长按事件实现方式

原来是 pc 端右键菜单不能出现了,我一看原来是没有兼容移动端的事件,因为 pc 端我们只需要使用 @contextmenu 这个事件就可以实现右键菜单的出现了, 当然在此之前我们需要实现一个菜单组件...,因为移动端不像 pc 端一样有鼠标事件,移动端只有触摸事件: 今天我们处理 bug 的使用最简单的一种方式,就是使用 @touchstart,@touchend: // 实现移动端长按出现右键菜单 start...}, 我们可以看到使用通过延迟函数里执行我们右键时需要处理的动作,我们手指开始触摸时,需要先使用 clearTimeout 先清除上一次的定时器,再去执行我们想要执行的动作,再触摸结束之后,我们需要清除定时器...接下来就是总结 总结 vue中长按事件并没有封装,使用的时候需要我们自己取写一个方法获取长按事件。...}, 备注 备注:使用的时候注意如果是图片,建议把图片设置为背景,直接使用图片,长按时会触发浏览器对图片的保存、分享等。

1.2K30

DOM事件基本概念大总结(前端必备)

然而实际上,几乎所有主流浏览器都支持事件捕获阶段触发事件,它们并没有遵守规定 事件处理程序 主要是指 DOM 如何处理各种 HTML 上的程序。...不会冒泡 DOMFocusIn 获取焦点元素上触发,会冒泡; Opera 专有 鼠标与滚轮事件 鼠标点击与移动 主要是点击、双击、光标移入、移出、暗、放开的操作; mouseenter 首次移入元素内部触发...,不冒泡 mouseleave ,移出元素触发,不冒泡 mousemove 元素内重复移动触发 mouseout 移入另一个元素触发 mousedown 按鼠标触发 mouseup 释放鼠标按键触发...click 点击,只有按事件放开事件发生后才会触发,只是按下不会触发 dblclick 双击,当且仅当连续两次 click 时触发 触发顺序: mousedown mouseup click... scroll 事件 键盘和文本事件 键盘 keydown 敲击任意键时触发,若按住不放则不断触发 keypress 敲击字符健时触发,若按住不放则不断触发 keyup 释放键盘触发字符键时依次触发

1.8K20
领券