11# GlobalEventHandlers 接口
22
3- ` GlobalEventHandlers ` 接口主要用于为各种事件指定回调函数 。
3+ 指定事件的回调函数,推荐使用的方法是元素的 ` addEventListener ` 方法 。
44
5- ` HTMLElement ` 、` Document ` 和` Window ` 这三种接口继承了这个接口,也就是说,各种 HTML 元素、` document ` 对象、` window ` 对象上面都可以使用` GlobalEventHandlers ` 接口提供的属性。
5+ ``` javascript
6+ div .addEventListener (' click' , clickHandler, false );
7+ ```
8+
9+ 除了之外,还有一种方法可以直接指定事件的回调函数。
10+
11+ ``` javascript
12+ div .onclick = clickHandler;
13+ ```
14+
15+ 这个接口是由` GlobalEventHandlers ` 接口提供的。它的优点是使用比较方便,缺点是只能为每个事件指定一个回调函数,并且无法指定事件触发的阶段(捕获阶段还是冒泡阶段)。
16+
17+ ` HTMLElement ` 、` Document ` 和` Window ` 都继承了这个接口,也就是说,各种 HTML 元素、` document ` 对象、` window ` 对象上面都可以使用` GlobalEventHandlers ` 接口提供的属性。下面就列出这个接口提供的主要的事件属性。
618
719## GlobalEventHandlers.onabort
820
@@ -72,28 +84,6 @@ element.onblur = function () {
7284
7385注意,如果不是可以接受用户输入的元素,要触发` onfocus ` ,该元素必须有` tabindex ` 属性。
7486
75- ## GlobalEventHandlers.onclick,GlobalEventHandlers.ondblclick
76-
77- 用户点击元素时,会触发该元素的` onclick ` 属性。
78-
79- ``` javascript
80- element .onclick = function (event ) {
81- console .log (' moot!' );
82- };
83- ```
84-
85- ` onclick ` 属性的处理函数的参数是一个 MouseEvent 对象,会包含当前鼠标位置等信息。函数内部的` this ` ,指向当前元素。
86-
87- 该属性有两点需要注意。一是,它的触发时间在` mousedown ` 和` mouseup ` 事件的后面;二是,` keydown ` 事件最好与` click ` 事件部署同样的逻辑,以适应用户不使用鼠标或触摸屏、只使用键盘的情况。
88-
89- 用户双击元素时,会触发` dblclick ` 事件,导致执行` ondblclick() ` 。
90-
91- ``` javascript
92- element .ondblclick = function () {
93- console .log (' 双击事件发生' );
94- };
95- ```
96-
9787## GlobalEventHandlers.onscroll
9888
9989页面或元素滚动时,会触发` scroll ` 事件,导致执行` onscroll() ` 。
@@ -110,143 +100,67 @@ document.oncontextmenu = function () {
110100
111101上面代码中,` oncontextmenu ` 属性执行后返回` false ` ,右键菜单就不会出现。
112102
113- 元素的右键菜单显示时,会触发该元素的` onshow ` 事件。
114-
115- ## 鼠标相关属性
116-
117- - GlobalEventHandlers.onmousedown
118- - GlobalEventHandlers.onmouseenter
119- - GlobalEventHandlers.onmouseleave
120- - GlobalEventHandlers.onmousemove
121- - GlobalEventHandlers.onmouseout
122- - GlobalEventHandlers.onmouseover
123- - GlobalEventHandlers.onmouseup
124- - GlobalEventHandlers.onwheel
103+ 元素的右键菜单显示时,会触发该元素的` onshow ` 监听函数。
125104
126- ## 键盘相关属性
105+ ## 其他的事件属性
127106
128- - GlobalEventHandlers.onkeydown
129- - GlobalEventHandlers.onkeypress
130- - GlobalEventHandlers.onkeyup
107+ 鼠标的事件属性。
131108
132- ## 表单相关属性
109+ - onclick
110+ - ondblclick
111+ - onmousedown
112+ - onmouseenter
113+ - onmouseleave
114+ - onmousemove
115+ - onmouseout
116+ - onmouseover
117+ - onmouseup
118+ - onwheel
133119
134- ### GlobalEventHandlers.oninput,GlobalEventHandlers.onchange
120+ 键盘的事件属性。
135121
136- ` <input> ` 、` <select> ` 、` <textarea> ` 元素的值发生任何一点变更时,都会同步触发` input ` 事件,导致执行` oninput() ` 。当用户的输入告一段落后,输入框失去焦点之后,才会触发` change ` 事件,导致执行` onchange() ` ,也就是说不是每一次输入,都会触发` change ` 事件。
122+ - onkeydown
123+ - onkeypress
124+ - onkeyup
137125
138- 另外,打开 ` contenteditable ` 属性的元素(变成可编辑模式)的内容发生变化时,也会触发 ` input ` 事件 。
126+ 焦点的事件属性 。
139127
140- ` oninput ` 和` onchange ` 的参数就是事件对象,可以从` event.target.value ` 上拿到用户输入的值。
128+ - onblur
129+ - onfocus
141130
142- ### GlobalEventHandlers.oninvalid,GlobalEventHandlers.onreset
131+ 表单的事件属性。
143132
144- 一个表单元素的值不符合规定条件时,就会触发` invalid ` 事件,导致` oninvalid() ` 执行。
133+ - oninput
134+ - onchange
135+ - onsubmit
136+ - onreset
137+ - oninvalid
138+ - onselect
145139
146- 用户重置表单时,会触发 ` reset ` 事件,导致执行 ` onreset() ` 。
140+ 触摸的事件属性 。
147141
148- ### GlobalEventHandlers.onselect
142+ - ontouchcancel
143+ - ontouchend
144+ - ontouchmove
145+ - ontouchstart
149146
150- 表单的 ` <input> ` 文本输入框和 ` <textarea> ` 里面的文本被选中,会触发 ` select ` 事件,导致执行 ` onselect() ` 。
147+ 拖动的事件属性分成两类:一类与被拖动元素相关,另一类与接收被拖动元素的容器元素相关 。
151148
152- ### GlobalEventHandlers.onsubmit
149+ 被拖动元素的事件属性。
153150
154- 用户提交表单时,会触发表单元素的` submit ` 事件,导致执行` onsubmit() ` 。
151+ - ondragstart:拖动开始
152+ - ondrag:拖动过程中,每隔几百毫秒触发一次
153+ - ondragend:拖动结束
155154
156- ## 拖动相关属性
155+ 接收被拖动元素的容器元素的事件属性。
157156
158- 拖动相关属性分成两类:一类与被拖动元素相关,另一类接收被拖动元素的容器元素相关。
157+ - ondragenter:被拖动元素进入容器元素。
158+ - ondragleave:被拖动元素离开容器元素。
159+ - ondragover:被拖动元素在容器元素上方,每隔几百毫秒触发一次。
160+ - ondrop:松开鼠标后,被拖动元素放入容器元素。
159161
160- 被拖动元素的相关属性 。
162+ ` <dialog> ` 对话框元素的事件属性 。
161163
162- - GlobalEventHandlers.ondragstart:拖动开始
163- - GlobalEventHandlers.ondrag:拖动过程中,每隔几百毫秒触发一次
164- - GlobalEventHandlers.ondragend:拖动结束
164+ - oncancel
165+ - onclose
165166
166- 接收被拖动元素的容器元素的相关属性。
167-
168- - GlobalEventHandlers.ondragenter:被拖动元素进入容器元素。
169- - GlobalEventHandlers.ondragleave:被拖动元素离开容器元素。
170- - GlobalEventHandlers.ondragover:被拖动元素在容器元素上方,每隔几百毫秒触发一次。
171- - GlobalEventHandlers.ondrop:松开鼠标后,被拖动元素放入容器元素。
172-
173- 以上属性的函数参数都是事件对象。
174-
175- ``` javascript
176- element .ondragstart = function (ev ) {
177- console .log (' dragStart' );
178- }
179-
180- element .ondrag = function (ev ) {
181- console .log (' Drag' );
182- }
183-
184- element .ondragEnd = function (ev ) {
185- console .log (' dragEnd' );
186- }
187- ```
188-
189- ## 触摸事件的相关属性
190-
191- 触摸事件的相关属性有四个。
192-
193- - GlobalEventHandlers.ontouchcancel
194- - GlobalEventHandlers.ontouchend
195- - GlobalEventHandlers.ontouchmove
196- - GlobalEventHandlers.ontouchstart
197-
198- 下面是一个例子。
199-
200- ``` javascript
201- /* HTML 代码如下
202- <div id="target1"> 触摸这里 </div>
203- */
204-
205- function startTouch (event ) {
206- // ...
207- }
208-
209- var el= document .getElementById (' target1' );
210- el .ontouchstart = startTouch;
211- ```
212-
213- ## 特定元素的属性
214-
215- ### GlobalEventHandlers.oncancel,GlobalEventHandlers.onclose
216-
217- 用户点击` <dialog> ` 的取消按钮或按下` esc ` 键时,会触发` cancel ` 事件,导致执行` oncancel ` 属性。用户关闭` <dialog> ` 窗口,会触发` onclose ` 事件,导致执行` onclose ` 属性。
218-
219- 这两个属性在 DOM 中只对` <dialog> ` 元素有意义。
220-
221- ## 拖拉事件的属性
222-
223- - ondrag:` drag ` 事件的监听函数
224- - ondragend:` dragend ` 事件的监听函数
225- - ondragenter:` dragenter ` 事件的监听函数
226- - ondragexit:` dragexit ` 事件的监听函数
227- - ondragleave:` dragleave ` 事件的监听函数
228- - ondragover:` dragover ` 事件的监听函数
229- - ondragstart:` dragstart ` 事件的监听函数
230- - ondrop:` drop ` 事件的监听函数
231-
232- 下面是一个例子。
233-
234- ``` html
235- <div >
236- <p
237- id =" source"
238- ondrag =" drag_handler(event);"
239- ondragstart =" dragstart_handler(event);"
240- draggable =" true"
241- >
242- 拖动该元素
243- </p >
244- </div >
245- <div
246- id =" target"
247- ondrop =" drop_handler(event);"
248- ondragover =" dragover_handler(event);"
249- >
250- 目标区域
251- </div >
252- ```
0 commit comments