用户界面事件

UI 事件指的是那些不一定与用户操作有关的事件。这些事件在 DOM 规范出现之前,都是以这种或那种形式存在的,而在 DOM 规范中保留是为了向后兼容。

事件方法说明
DOMActivate表示元素已经被用户操作(通过鼠标或键盘)激活。这个事件在 DOM3 级事件中被废弃,但 FireFox2+ 和 Chrome 支持它。考虑到不同浏览器实现的差异 ,不建议使用这个事件。
load当页面完全加载后在 window 上面触发,当所有框架都加载完毕时在框架集上面触发,当图像加载完毕时在 <img> 元素上面触发。或者当嵌入的内容加载完毕时在元素上面触发。
unload当页面完全卸载后在 window 上面触发,当所有框架都卸载后在框架集上面触发,或者当嵌入的内容卸载完毕后在元素上面触发。
abort在用户停止下载过程时,如果嵌入的内容没有加载完,则在元素上面触发。
error当发生 JavasScript 错误时在 window 上面触发,当无法加载图片时在<img>元素上面触发,当元素加载嵌入内容时在元素上面触发,或者当有一或多个框架无法加载时在框架集上面触发。
select当用户选择文本框中的一个可多个字符时触发。
resize当窗口或框架的大小变化(<input><textarea)时在 window 或框架上面触发。
scroll当用户流动带有流动条的元素中的内容时,在该元素上面触发。元素中包含所加载页面的流动条。

load 事件

当页面完全加载后(包括所有图像、JavaScript 文件、CSS 文件等外部资源),就会触发 window 上面的 load 事件。

有两种定义 load 事件的方式:

  • 通过 JavaScript 事件处理程序定义

    window.addEventListener('load', function(event) {
    // do something
    });
  • 通过为 <body> 元素添加 onload 特性

    <body onload="console.log('Loaded!')"></body>

unload 事件

与 load 事件对应的是 unload 事件,这个事件在文档被完全卸载后触发。只要用户从一个页面切换到另一个页面,unload 事件就会触发。而利用这个事件最多的情况就是清除引用,以避免内存泄漏。

unload 事件的定义方式与 load 事件相同。

resize 事件

当浏览器窗口被调整到一个新的高度或宽度时,就会触发 resize 事件。这个事件在 window(窗口)上面触发,因此可以通过 JavaScript 或者 <body> 元素中的 onsize 特性来指定事件处理程序。

关于何时会触发 resize 事件,不同浏览器有不同的机制。IE、Safari、Chrome 和 Opera 会在浏览器窗口变化了 1 像素时就触发 resize 事件,然后随着变化不断重复触发。FIrefox 则只会在用户停止调整窗口变化时才会触发 resize 事件。由于 存在这个差别,应该注意不要在这个事件的处理程序中加入大计算的代码。因为这些代码有可能被频繁执行,从而导致浏览器反应明显变慢。

scroll 事件

虽然 scroll 事件是在 window 对象上发生的,但它实际表示的则是页面中相应元素的变化。在混杂模式下,可以通过 <body> 元素的 scrollLeftscrollTop 来监控到这一变化;而在标准模式下,除 Safari 之外的所有浏览器都会通过 <html> 元素来反映这一变化(Safari 仍然基于 <body> 跟踪滚动位置)。

与 resize 事件类似,scroll 事件也会在文档被滚动期间重复被触发,所以有必要尽量保持事件处理程序的代码简单。