触摸事件

只有触摸屏才会引发这一类事件

触摸事件 和 鼠标事件 同时触发,即使这个时候并没有用到鼠标。

这是为了让那些只定义鼠标事件、没有定义触摸事件的代码,在触摸屏的情况下仍然能用。

如果想避免这种情况,可以用 event.preventDefault 方法阻止发出鼠标事件

Touch            一个触摸点

TouchList            多个触摸点的集合

TouchEvent            触摸引发的事件实例

  • var touch = new Touch(touchOptions)
  • 配置对象可选值

identifier        必需        整数        触摸点的唯一 ID
target        必需        元素节点        触摸点开始时所在的网页元素
clientX        可选        数值        触摸点相对于浏览器窗口左上角的水平距离,默认为0。
clientY        可选        数值        触摸点相对于浏览器窗口左上角的垂直距离,默认为0。
screenX        可选        数值        触摸点相对于屏幕左上角的水平距离,默认为0。
screenY        可选        数值        触摸点相对于屏幕左上角的垂直距离,默认为0。
pageX        可选        数值        触摸点相对于网页左上角的水平位置(即包括页面的滚动距离),默认为0。
pageY        可选        数值        触摸点相对于网页左上角的垂直位置(即包括页面的滚动距离),默认为0。
radiusX        可选        数值        触摸点周围受到影响的椭圆范围的 X 轴半径,默认为0。
radiusY        可选        数值        触摸点周围受到影响的椭圆范围的 Y 轴半径,默认为0。
rotationAngle        可选        数值        触摸区域的椭圆的旋转角度,单位为度数,在0到90度之间,默认值为0。
force        可选        数值        范围在0到1之间        表示触摸压力        0代表没有压力,1代表硬件所能识别的最大压力,默认为 0

  • Touch 接口的实例属性        var touch = e.changedTouches.item(0);

touch.identifier 

返回一个整数,表示触摸点的唯一 ID。

这个值在整个触摸过程保持不变,直到触摸事件结束。

touch.force

返回一个0到1之间的数值,表示触摸压力。

0代表没有压力,1代表硬件所能识别的最大压力。

touch.target

返回一个元素节点,代表触摸发生时所在的那个元素节点。

即使触摸点已经离开了这个节点,该属性依然不变。

touch.screenX,touch.screenY       

相当于屏幕左上角

touch.clientX,touch.clientY       

相当于浏览器窗口左上角

touch.pageX,touch.pageY

相当于整个网页左上角

touch.radiusX,touch.radiusY

返回触摸点周围受到影响的椭圆范围的 X 轴半径和 Y 轴半径,单位为像素。

乘以 2 就可以得到触摸范围的宽度和高度

touch.rotationAngle

表示触摸区域的椭圆的旋转角度,单位为度数,在0到90度之间

  • 精准描述 手指触屏 的椭圆区域
  • div.addEventListener('touchstart', rotate);
    div.addEventListener('touchmove', rotate);
    div.addEventListener('touchend', rotate); function rotate(e) {
    var touch = e.changedTouches.item(0);
    e.preventDefault(); src.style.width = touch.radiusX * 2 + 'px';
    src.style.height = touch.radiusY * 2 + 'px';
    src.style.transform = 'rotate(' + touch.rotationAngle + 'deg)';
    };
  • TouchList 接口

表示一组触摸点的集合。表示所有触摸点

它的实例是一个类似数组的对象,成员是 Touch 的实例对象

用户用三根手指触摸,产生的 TouchList 实例就会包含三个成员,每根手指的触摸点对应一个 Touch 实例对象

主要通过触摸事件的 event.touches、event.changedTouches、event.targetTouches 这几个属性获取

  • 实例属性

event.touches.length        

触摸点的数量

  • 实例方法

event.touches.item()        指定位置的成员,它的参数是该成员的位置编号(从零开始)   

event.touches.item(0);  等同于 event.touches[0];

  • 浏览器原生提供 TouchEvent() 构造函数,用来生成触摸事件的实例。除了被继承的属性以外,它还有一些自己的属性。
  • var touchEvent = new TouchEvent(type, options);

第一个参数 是字符串,表示事件类型

第二个参数是事件的配置对象,该参数是可选的,对象的所有属性也是可选的。

除了 Event 接口的配置属性,该接口还有一些自己的配置属性。

touches        TouchList 实例        代表屏幕上所有的的手指列表,默认值是一个空数组[]。

targetTouches        TouchList 实例        代表所有处在目标元素上的手指列表,默认值是一个空数组[]。

changedTouches        TouchList 实例        代表所有处目标元素 目标事件 上的手指列表 ,默认值是一个空数组[]。

ctrlKey        布尔值        表示 Ctrl 键是否同时按下,默认值为false。

shiftKey        布尔值        表示 Shift 键是否同时按下,默认值为false。

altKey        布尔值        表示 Alt 键是否同时按下,默认值为false。

metaKey        布尔值        表示 Meta 键(或 Windows 键)是否同时按下,默认值为false。

  • 触摸事件的种类    event.type

touchstart

用户开始触摸时触发,它的target属性返回发生触摸的元素节点。

touchend

用户不再接触触摸屏时(或者移出屏幕边缘时)触发

它的 target 属性 与 touchstart 事件一致的,就是开始触摸时所在的元素节点。

它的 changedTouches 属性返回一个 TouchList 实例,包含所有不再触摸的触摸点(即 Touch 实例对象)。

touchmove

用户移动触摸点时触发,

它的 target 属性 与 touchstart 事件一致。

如果触摸的半径角度力度发生变化,也会触发该事件。

touchcancel

触摸点取消时触发

比如在触摸区域跳出一个模态窗口(modal window)

触摸点离开了文档区域(进入浏览器菜单栏)、

用户的触摸点太多,超过了支持的上限(自动取消早先的触摸点)。

  • var el = document.getElementsByTagName('canvas')[0];
    el.addEventListener('touchstart', handleStart, false);
    el.addEventListener('touchmove', handleMove, false); function handleStart(evt) {
    evt.preventDefault();
    var touches = evt.changedTouches;
    for (var i = 0; i < touches.length; i++) {
    console.log(touches[i].pageX, touches[i].pageY);
    };
    }; function handleMove(evt) {
    evt.preventDefault();
    var touches = evt.changedTouches;
    for (var i = 0; i < touches.length; i++) {
    var touch = touches[i];
    console.log(touch.pageX, touch.pageY);
    };
    };

(97)Wangdao.com_第三十天_触摸事件的更多相关文章

  1. (98)Wangdao.com_第三十天_拖拉事件

    拖拉事件 拖拉 drag ,是指用户在某个对象上按下鼠标键不放,拖动它到另一个位置,然后释放鼠标键,将该对象放在那里. 一旦某个元素节点的 draggable 属性设为true,就无法再用鼠标选中该节 ...

  2. (93)Wangdao.com_第二十六天_鼠标事件

    鼠标事件 与鼠标相关的事件,继承了 MouseEvent 接口 分类: click        按下鼠标(通常是按下主按钮)时触发.        mousedown 首先触发,mouseup 接着 ...

  3. Jmeter(三十六)_运行过程中改变负载

    顾名思义,jmeter在做性能测试时,可以在不停止脚本的情况下修改负载压力,达到期望的测试效果.我们将通过Constant Throughput Timer(吞吐量计时器)和Beanshell服务器来 ...

  4. Jmeter(三十五)_分布式

    jmeter分布式简单步骤说明: 1:添加远程服务器IP到配置文件 在JMETER_HOME / bin / jmeter.properties中,找到名为“ remote_hosts ” 的属性,并 ...

  5. Jmeter(三十五)_精确实现网页爬虫

    Jmeter实现了一个网站文章的爬虫,可以把所有文章分类保存到本地文件中,并以文章标题命名 它原理就是对网页提交一个请求,然后把返回的所有值提取出来,利用ForEach控制器去实现遍历.下面来介绍一下 ...

  6. Jmeter(三十二)_搭建本地接口自动化环境

    我们在学习接口自动化的时候,最理想的状态是在公司有项目可以操作.大部分时候我们并没有可以练习的项目,因此练习接口无从谈起,只能找一些开放的api来练一练,但是这样并不能提高我们的技术.因此我们需要搭建 ...

  7. SpringBoot | 第三十二章:事件的发布和监听

    前言 今天去官网查看spring boot资料时,在特性中看见了系统的事件及监听章节.想想,spring的事件应该是在3.x版本就发布的功能了,并越来越完善,其为bean和bean之间的消息通信提供了 ...

  8. 学习之路三十九:新手学习 - Windows API

    来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...

  9. 第三十六节,目标检测之yolo源码解析

    在一个月前,我就已经介绍了yolo目标检测的原理,后来也把tensorflow实现代码仔细看了一遍.但是由于这个暑假事情比较大,就一直搁浅了下来,趁今天有时间,就把源码解析一下.关于yolo目标检测的 ...

随机推荐

  1. 从Socket入门到BIO,PIO,NIO,multiplexing,AIO(未完待续)

    Socket入门 最简单的Server端读取Client端内容的demo public class Server { public static void main(String [] args) t ...

  2. 二维、三维 Laplace 算子的极坐标表示

    (1) 设 $(r,\theta)$ 是 $\bbR^2$ 的极坐标, 即 $$\bex x=r\cos\theta,\quad y=r\sin \theta. \eex$$ 证明 Laplace 算 ...

  3. CemtOS7更改yum网易 阿里云的yum源。

    一,鉴于用国外的Yum源,速度比较慢,所以想到将国外的yum源,改为国内的Yum源,著名的有网易 阿里云源.如何更改呢? 二,更改yum源为网易的. 首先备份/etc/yum.repos.d/Cent ...

  4. js中精度问题以及解决方案

    js中的数字按照IEEE 754的标准,使用64位双精度浮点型来表示.其中符号位S,指数位E,尾数位M分别占了1,11,52位,并且在ES5规范中指出了指数位E的取值范围是[-1074, 971]. ...

  5. BootStrap分页教程

    https://www.cnblogs.com/laowangc/p/8875526.html https://www.cnblogs.com/yinglunstory/p/6092834.html ...

  6. 更改Ubuntu默认python版本的方法

    当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Python 版本,因此系统中会存在多个 Python 的可执行二进制文件.一般Ubuntu默认的Python版本都为2. ...

  7. noj算法 踩气球 回溯法

    描述: 六一儿童节,小朋友们做踩气球游戏,气球的编号是1-100,两位小朋友各踩了一些气球,要求他们报出自己所踩气球的编号的乘积.现在需要你编一个程序来判断他们的胜负,判断的规则是这样的:如果两人都说 ...

  8. 初学python之路-day01

    第一天学习python,先了解到了进制之间的转换关系. 如二进制与十进制的转换,如1111转成十进制为15,1111从左向右可看出2^3+2^2+2^1+2^0为8+4+2+1=15.记住前8位1的二 ...

  9. VMware虚拟机从一台电脑复制到另一台电脑

    1.选中.vmx文件和所有的.vmdk文件,添加到压缩文件 vmx是虚拟系统配置文件,而vmdk则是虚拟磁盘文件,它们都是VMware所支持的文件格式 2.复制压缩文件到另一台电脑上,并解压 3.在另 ...

  10. 怎么给PDF文件交换页面

    在使用PDF文件的时候有文件页面的排版错误的时候,这个时候就需要交换页面了,那么怎么给PDF文件交换页面呢,在使用PDF文件的时候需要交换页面的时候要怎么做呢,下面小编就为大家分享一下PDF文件交换页 ...