Cocos Creator_JavaScript权威指南(第六版)_第17章_事件处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39710961/article/details/82466081

事件类型(event type)是一个用来说明发生什么类型事件的字符串。例如,“mousemove”表示用户移动鼠标,“keydown”表示键盘上某个键被按下,而“load”表示文档(或某个其他资源)从网络上加载完毕。由于事件类型只是一个字符串,因此实际上有时会称之为事件名字。
事件目标(event target)是发生的事件或与之相关的对象。当讲事件时,我们必须同时指明类型和目标。例如,window上的load事件或元素的click事件。在客户端的JavaScript应用程序中,Window、Document和Element对象是最常见的事件目标,但某些是由其他类型的对象触发。
事件处理程序(event handler)或事件监听程序(event listener)是处理或响应事件的函数。应用成功通过指明事件类型和事件目标,在Web浏览器中注册他们的事件处理程序函数。当在特定的目标上发生特定类型的事件时,浏览器会调用对应的处理程序。当对象上注册的事件处理程序被调用时,可以理解为浏览器“触发”和“派发”了事件。
事件对象是与特定事件相关且包含有关该事件详细信息的对象。事件对象作为参数传递给事件处理程序函数(不包括IE8及之前版本,在这些浏览器中有时仅能通过全局变量event才能得到)。所有的事件对象都有用来指定事件类型的type属性和指定事件目标的target属性。(在IE8及之前版本中用srcElement而非target。)每个事件类型都为其相关事件对象定义一组属性。例如,鼠标事件的相关对象会包含鼠标指针的坐标,而键盘事件的相关对象会包含按下的键和辅助键的详细信息。许多事件类型仅定义了像type和target这样少量的标准属性,就无法获取许多其他有用的信息。对于这些事件而言,只是事件简单地发生,无法得到事件的详细信息。
事件传播(event propagation)是浏览器决定那个对象触发其事件处理程序的过程。对于单个对象的特定事件(比如Window对象的load事件),必须是不能传播的。当文档元素上发生某个类型的事件时,然而,他们会在文档树上向上传播或“冒泡”(bubble)。如果用户移动鼠标指针到超链接上,在定义这个链接的元素上首先会触发mousemove事件,然后是在容器元素上触发这个事件,也许是

元素、元素或Document对象本身。有时,在Document或其他容器元素上注册单个事件处理程序比在每个独立的目标元素上都注册处理程序要更方便。事件处理程序能通过调用方法或设置事件对象属性来阻止事件传播,这样他就能停止冒泡且将无法在容器元素上触发处理程序。
事件传播的另外一种形式称为事件捕获(event capturing),在容器元素上注册的特定处理程序有机会再事件传播到真实目标之前拦截(或“捕获”)它。IE8及之前版本不支持事件捕获、所以不常用它。但是,当处理鼠标拖放事件时,捕获或“夺取”鼠标事件的能力是必需的。
一些事件有与之相关的默认操作。例如,当超链接上发生click事件时,浏览器的默认操作是按照链接加载新页面。事件处理程序可以通过返回一个适当的值、调用事件对象的某个方法或设置事件对象的某个属性来阻止默认操作的发生。这有时称为“取消”事件。

17.1 事件类型
在Web初期,客户端程序员只能使用少部分事件,比如“load”、“click”和“mousemove”等。这些传统事件类型在所有浏览器中都得到了很好的支持。
·3级DOM事件(DOM Level 3 Events)规范,经过长期的停滞之后,在W3C的主持下又开始换发生机。
·HEML5规范及相关衍生规范的大量新API定义了新事件,比如历史管理、拖放、跨文档通信,以及视频和音频的播放。
·基于触摸和支持JavaScript的移动设备的出现,比如iphone,他们需要定义新的触摸和手势事件类型。
事件分类
1. 依赖于设备的输入事件:
有些事件和特定输入设备直接相关,比如鼠标和键盘。包括诸如“mousedown”、“mousemove”、“mouseup”、“keydown”、“keypress”和“keyup”这样的传统事件类型,也包括像“touchmove”和“getsurechange”这样新的触摸事件类型。

  1. 独立于设备的输入事件。
  2. 用户界面事件。
  3. 状态变化事件。
  4. 特定API事件
  5. 计时器和错误处理程序

17.1.1 传统事件类型
处理数鼠标、键盘和天很近

猜你喜欢

转载自blog.csdn.net/qq_39710961/article/details/82466081