JS—触摸事件、手势事件

JS—触摸事件、手势事件

    • dbclick
      触屏设备不支持双击事件。双击浏览器窗口,会放大画面。
      可以通过在head标签内加上这么一行:

        <meta name="viewport" content="width=device-width, minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">

      可以实现,我们编写的页面不会随着用的手势而放大缩小。
      关于meta标签,我还没有研究过,罪过啊。

    • mouse
      在触屏上,我们单击一个元素,会相应的触发:mousemove mousedown mouseup click,所以当我们编写移动客户端界面时,可以为元素直接添加move事件,可以提高效率。
      同时也会触发mouseovermouseout,测试结果,我发现,只有当页面第一次刷新时,单击元素,参会触发mouseover事件。

    随着触屏移动端设备的普及使用,W3C开始制定TouchEvent规范。

    • 触摸事件
      该类事件会在用户手指放在屏幕上面时,在屏幕上滑动时,或从屏幕上移开时触发。具体来说有以下几个触摸事件。

      • touchstart
        当手指放在屏幕上触发。
      • touchmove
        当手指在屏幕上滑动时,连续地触发。
      • touchend
        当手指从屏幕上离开时触发。
      • touchcancel
        当系统停止跟踪时触发,系统什么时候取消,文档没有明确的说明。
        【总】以上四个,是w3c提供的触摸事件,只针对触摸设备,最常用的是前三个。
        由于触摸会导致屏幕动来动去,所以可以会在这些事件的事件处理函数内使用event.preventDefault(),来阻止屏幕的默认滚动。
    • 除了常用的DOM属性,触摸事件还包含下列三个用于跟踪触摸的属性。
      • touches:表示当前跟踪的触摸操作的touch对象的数组。
        当一个手指在触屏上时,event.touches.length=1,
        当两个手指在触屏上时,event.touches.length=2,以此类推。
      • targetTouches:特定于事件目标的touch对象数组。
        因为touch事件是会冒泡的,所以利用这个属性指出目标对象。
      • changedTouches:表示自上次触摸以来发生了什么改变的touch对象的数组。
        每个touch对象都包含下列几个属性:
      • clientX:触摸目标在视口中的x坐标。
        clientY:触摸目标在视口中的y坐标。
        identifier:标识触摸的唯一ID。
        pageX:触摸目标在页面中的x坐标。
        pageY:触摸目标在页面中的y坐标。
        screenX:触摸目标在屏幕中的x坐标。
        screenY:触摸目标在屏幕中的y坐标。
        target:触摸的DOM节点目标。
        【如何使用呢?】
            EventUtil.addHandler(div,"touchstart",function(event){
                div.innerHTML=event.touches[0].clientX+‘,‘+event.touches[0].clientY;
            });
            EventUtil.addHandler(div,"touchmove",function(event){
                event.preventDefault();
                div.innerHTML=event.touches[0].clientX;
            });
            EventUtil.addHandler(div,"touchend",function(event){
                div.innerHTML=event.changedTouches[0].clientY;
            });

        使用clientX……时,必须要指明具体的touch对象,而不要直接指明数组。
        event.touches[0]
        touchend事件处理函数中,当该事件发生时,touches里面已经没有任何的touch对象了,此时,就要使用changeTouches集合。


    • 手势事件

      • gesturestart:当一个手指已经按在屏幕上,而另一个手指又触摸在屏幕时触发。
      • gesturechange:当触摸屏幕的任何一个手指的位置发生变化时触发。
      • gestureend:当任何一个手指从屏幕上面移开时触发。
        【注意】只有两个手指都触摸到事件的接收容器时才触发这些手势事件。
    • 触摸事件与手势事件之间的关系
      1、当一个手指放在屏幕上时,会触发touchstart事件,如果另一个手指又放在了屏幕上,则会触发gesturestart事件,随后触发基于该手指的touchstart事件。
      2、如果一个或两个手指在屏幕上滑动,将会触发gesturechange事件,但只要有一个手指移开,则会触发gestureend事件,紧接着又会触发toucheend事件。
    • 手势的专有属性
      • rotation:表示手指变化引起的旋转角度,负值表示逆时针,正值表示顺时针,从零开始。
      • scale:表示两个手指之间的距离情况,向内收缩会缩短距离,这个值从1开始,并随距离拉大而增长。
时间: 2024-10-20 00:39:48

JS—触摸事件、手势事件的相关文章

JavaScript触摸与手势事件

处理Touch事件能让你跟踪用户的每一根手指的位置.你可以绑定以下四种Touch事件: 1.touchstart:  // 手指放到屏幕上的时候触发 2.touchmove:  // 手指在屏幕上移动的时候触发 3.touchend:  // 手指从屏幕上拿起的时候触发 4touchcancel:  // 系统取消touch事件的时候触发.至于系统什么时候会取消,不详 属性 1.client / clientY:// 触摸点相对于浏览器窗口viewport的位置 2.pageX / pageY:

javaScript事件(九)事件类型之触摸与手势事件

一.触摸事件 touchstart:当手指触摸屏幕时触发:即使已经有一个手指放在了屏幕上也会触发. touchmove:当手指在屏幕上滑动时连续地触发.在这个世界发生期间,调用preventDefault()可以阻止滚动. touchend:当手指在屏幕上移开时触发. touchcancel:当系统停止跟踪触摸时触发.关于此事件的确切触发时间,文档中没有明确说明. 上面这几个事件都会冒泡,也都可以取消.虽然这些触摸事件没有在DOM规范中定义,但它们却是以兼容DOM的方式实现的.因此,每个触摸事件

JS学习笔记6_事件

1.事件冒泡 由内而外的事件传播(从屏幕里飞出来一支箭的感觉) 2.事件捕获 由表及里的事件传播(力透纸背的感觉) 3.DOM事件流(DOM2级) 事件捕获阶段 -> 处于目标阶段 -> 事件冒泡阶段(拿根针从屏幕扎进去,缝衣服的感觉) 事件捕获是从DOM树根到叶子的事件传播,所以可以在靠近根的位置捕获(event.stopPropagation)事件,让叶子收不到事件信号 事件冒泡是从叶子到根的原路返回过程,所以可以在靠近根的位置集中处理(event.target)叶子的事件,也就是所谓的事

JS学习12(事件)

事件流 IE和Netscape开发团队提出了完全相反的两种事件流的概念,事件冒泡流和事件捕获流. 事件冒泡 事件由最具体的元素开始,逐级向上传播到较不具体的元素,最终到文档. 事件捕获 事件捕获从document开始,逐级向下,最后传到最具体的节点. DOM事件流 DOM2级事件定义的事件流包含3个阶段:事件捕获阶段,处于目标阶段,事件冒泡阶段. 捕获阶段会从文档节点自上而下传递直到目标节点的上一个节点:处于目标阶段时传到目标节点,冒泡阶段开始向上传递知道文档节点. 规定是捕获阶段事件不传递到目

js实现Mac触摸板双指事件(上/下/左/右/放大/缩小)

前言 这几天在修复一个web问题时,需要捕获Mac触摸板双指事件(上.下.左.右.放大.缩小),但发现并没有现成的轮子,还是要自己造. 例如:jquery.mousewheel.js(添加跨浏览器的鼠标滚轮支持), 给得太简单,没有处理Mac双指行为,所以不能用. 目标 获取Mac触摸板双指行为,具体有两个,一个是实时拖动路线,二是手势(上.下.左.右.放大.缩小). 难点 双指行为只会触发mousewheel事件,其他什么的touch,mouse都不会触发,只能从这个下手. 双指特性 1.在快

移动端手势事件 hammer.JS插件

一.引入hammer.JS 1.下载地址:http://download.csdn.net/detail/webxiaoma/9872249 2.官网地址:http://hammerjs.github.io/examples/ 3.CDN链接:http://hammerjs.github.io/dist/hammer.min.js 二.用法 1.首先我们先写一个出发事件的DOM元素 HTML: <style type="text/css"> html, body { wid

Qt for android触摸手势事件QGestureEvent

在触摸设备上可以使用Qt的手势事件 要激活手势事件,需要执行以下操作: 第一步,为QWidget控件注册手势事件 QList<Qt::GestureType> gestures; gestures << Qt::PanGesture; gestures << Qt::PinchGesture; gestures << Qt::SwipeGesture; gestures << Qt::TapGesture; gestures << Q

手势事件

1.基本的手势事件主要有如下三个方法: dispatchTouchEvent : 判断该事件是否需要下发.返回true表示需要下发给下级视图,返回false表示不需要下发(交给自身的onTouchEvent处理).但是否最终下发,还需根据onInterceptTouchEvent的拦截结果. onInterceptTouchEvent : 判断当前容器是否需要拦截该事件.返回true表示予以拦截(交给自身的onTouchEvent处理).不放给下级视图,返回false表示不拦截该事件. onTo

ionic 手势事件(滑动,拖拽,点击...)

ionic之AngularJS(十)——手势事件 Posted on 2015年12月23日 by cswisdomliu 长按 : on-hold 在屏幕同一位置按住超过500ms,将触发on-hold事件: 你可以在任何元素上使用这个指令挂接监听函数: <any on-hold=“…”>…</any> 示例代码: <body  ng-controller=”ezCtrl”><ion-header-bar class=”bar-positive”  on-hol