UI 事件指的是那些不一定与用户操作有关的事件。这些事件在 DOM 规范出现之前,都是以这种或那种形式存在的,而在 DOM 规范中保留是为了向后兼容。
事件方法 | 说明 |
---|---|
DOMActivate | 表示元素已经被用户操作(通过鼠标或键盘)激活。这个事件在 DOM3 级事件中被废弃,但 FireFox2+ 和 Chrome 支持它。考虑到不同浏览器实现的差异 ,不建议使用这个事件。 |
load | 当页面完全加载后在 window 上面触发,当所有框架都加载完毕时在框架集上面触发,当图像加载完毕时在 <img> 元素上面触发。或者当嵌入的内容加载完毕时在元素上面触发。 |
unload | 当页面完全卸载后在 window 上面触发,当所有框架都卸载后在框架集上面触发,或者当嵌入的内容卸载完毕后在元素上面触发。 |
abort | 在用户停止下载过程时,如果嵌入的内容没有加载完,则在元素上面触发。 |
error | 当发生 JavasScript 错误时在 window 上面触发,当无法加载图片时在<img> 元素上面触发,当元素加载嵌入内容时在元素上面触发,或者当有一或多个框架无法加载时在框架集上面触发。 |
select | 当用户选择文本框中的一个可多个字符时触发。 |
resize | 当窗口或框架的大小变化(<input> 或 <textarea )时在 window 或框架上面触发。 |
scroll | 当用户流动带有流动条的元素中的内容时,在该元素上面触发。元素中包含所加载页面的流动条。 |
当页面完全加载后(包括所有图像、JavaScript 文件、CSS 文件等外部资源),就会触发 window 上面的 load 事件。
有两种定义 load 事件的方式:
通过 JavaScript 事件处理程序定义
window.addEventListener('load', function(event) {// do something});
通过为 <body>
元素添加 onload
特性
<body onload="console.log('Loaded!')"></body>
与 load 事件对应的是 unload 事件,这个事件在文档被完全卸载后触发。只要用户从一个页面切换到另一个页面,unload 事件就会触发。而利用这个事件最多的情况就是清除引用,以避免内存泄漏。
unload 事件的定义方式与 load 事件相同。
当浏览器窗口被调整到一个新的高度或宽度时,就会触发 resize 事件。这个事件在 window(窗口)上面触发,因此可以通过 JavaScript 或者 <body>
元素中的 onsize 特性来指定事件处理程序。
关于何时会触发 resize 事件,不同浏览器有不同的机制。IE、Safari、Chrome 和 Opera 会在浏览器窗口变化了 1 像素时就触发 resize 事件,然后随着变化不断重复触发。FIrefox 则只会在用户停止调整窗口变化时才会触发 resize 事件。由于 存在这个差别,应该注意不要在这个事件的处理程序中加入大计算的代码。因为这些代码有可能被频繁执行,从而导致浏览器反应明显变慢。
虽然 scroll 事件是在 window 对象上发生的,但它实际表示的则是页面中相应元素的变化。在混杂模式下,可以通过 <body>
元素的 scrollLeft
和 scrollTop
来监控到这一变化;而在标准模式下,除 Safari 之外的所有浏览器都会通过 <html>
元素来反映这一变化(Safari 仍然基于 <body>
跟踪滚动位置)。
与 resize 事件类似,scroll 事件也会在文档被滚动期间重复被触发,所以有必要尽量保持事件处理程序的代码简单。