是三个"正确"听取事件的方法。在此示例中,我们正在侦听load
事件:
1. <body onload="doSomething();">
2. document.body.onload = doSomething;
3. document.body.addEventListener('load', doSomething);
可以通过以下三种方式收听所有 JavaScript事件吗?
或者是否有仅派遣的事件(第三行),并且不能&#34;听过&#34;作为事件属性(第一行)还是作为元素的属性(第二行)?反之亦然,从不发送,但只有可设置的回调&#34;特性
答案 0 :(得分:3)
可以通过以下三种方式收听所有 JavaScript事件吗?
没有
JavaScript中的某些事件是在不属于DOM的对象上触发的,因此当没有HTML时,无法在HTML中添加内联属性。
例如,MessageEvent
s表示WebSockets,ProgressEvent
s表示XmlHttpRequests。
HTML5 spec中有可能on(eventname)
属性的参考列表:
- onabort
- 的onblur *
- oncancel
- oncanplay
- oncanplaythrough
- 平变化
- 的onclick
- 的OnClose
- oncontextmenu
- oncuechange
- onfocus此
- ondrag当
- ondragend
- ondragenter
- ondragexit
- ondragleave
- ondragover
- ondragstart
- ondrop
- ondurationchange
- onemptied
- onended
- 的onerror *
- 的onfocus *
- oninput
- oninvalid
- 的onkeydown
- onkeypress事件
- 的onkeyup
- 的onload *
- onloadeddata
- onloadedmetadata
- onloadstart
- onmousedown事件
- OnMouseEnter在
- OnMouseLeave在
- 的OnMouseMove
- 的onmouseout
- 的onmouseover
- onmouseup
- onmousewheel
- 的onPause
- onplay
- onplaying
- onprogress
- onratechange
- onreset
- 在onResize *
- onscroll *
- onseeked
- onseeking
- ONSELECT
- OnShow中
- 的onSort
- onstalled
- 的onsubmit
- onsuspend
- ontimeupdate
- ontoggle
- onvolumechange
- onwaiting
标记为星号的属性在body元素上指定时具有不同的含义,因为这些元素公开具有相同名称的Window对象的事件处理程序。
关于如何在非DOM对象上处理事件,每个功能都有自己的规范和API。因此,每个功能都会随着浏览器之间的标准不一致而发生变化。