在 JavaScript 事件对象(Event Object)的生命周期中有三个不同的阶段。捕获阶段(Capture Phase)目标阶段(Target Phase)冒泡阶段(Bubble Phase)
HTMLElement、Document 和 Window 都继承了这个接口,也就是说,各种 HTML 元素、document 对象、window 对象上面都可以使用GlobalEventHandlers 接口提供的属性。下面就列出这个接口提供的主要的事件属性。
资源事件:beforeunload 事件、unload 事件、load 事件、error 事件。session 历史事件:pageshow 事件、pagehide 事件、popstate 事件、hashchange 事件。网页状态事件:DOMContentLoaded 事件、readystatechange 事件。窗口事件:scroll 事件、resize 事件、fullscreenchange 事件、fullscreenerror 事件。剪贴板事件、焦点事件、CustomEvent 接口。
拖拉(drag)指的是,用户在某个对象上按下鼠标键不放,拖动它到另一个位置,然后释放鼠标键,将该对象放在那里。拖拉的对象有好几种,包括元素节点、图片、链接、选中的文字等等。在网页中,除了元素节点默认不可以拖拉,其他(图片、链接、选中的文字)都是可以直接拖拉的。为了让元素节点可拖拉,可以将该节点的 draggable 属性设为 true 。
浏览器的触摸 API 由三个部分组成。Touch:一个触摸点。TouchList:多个触摸点的集合。TouchEvent:触摸引发的事件实例。
表单事件的种类有 input 事件、select 事件、change 事件、invalid 事件、reset 事件,submit 事件...
进度事件用来描述资源加载的进度,主要由 AJAX 请求、<img>、<audio>、<video>、<style>、<link> 等外部资源的加载触发,继承了 ProgressEvent 接口。它主要包含以下几种事件。
键盘事件由用户击打键盘触发,主要有 keydown、keypress、keyup 三个事件,它们都继承了 KeyboardEvent 接口。
事件发生以后,会产生一个事件对象,作为参数传给监听函数。浏览器原生提供一个 Event 对象,所有的事件都是这个对象的实例,或者说继承了 Event.prototype 对象。Event 对象本身就是一个构造函数,可以用来生成新的实例。