javascript中的事件二
前面介绍了,javascript中的事件流,事件处理程序以及事件对象Event包含的属性和方法。
这篇开始介绍Event的类型,包括常用的UI事件,焦点事件以及鼠标事件等。
一、UI事件
UI事件是页面级事件,包括的基本的事件有如下:
1. load : 当页面完全加载完后(包括图片,js文件,css文件等外部资源)触发window上面的load事件。
其中在img元素 ,script标签,style标签中都可以添加各自的load事件。
与图片不同的是,只有在设置了<script>元素的src属性并将改元素添加到文档后,才会开始下载js文件。
定义load事件的2中方式:
1) EventUtils.addHandler(window, 'load', function(){...})
2) 在<body>元素上添加一个onload的特性
2. unload: 当页面完全卸载完后,或框架,图片等元素卸载完毕后触发。
和load类似,可单独在image,js,css中添加unload事件。
注册方式和load类似,略。
3.abort:嵌入的内容没有下载完,被用户阻止后触发。
4.error:加载的内容出现错误时触发。
当图片加载失败显示默认图片并重写error事件:
<img src="$src" onerror="this.src=\'..images/default.png\';this.onerror=null;" />
5.select:当用户选择文档框<input /><textarea>元素时触发。
6. resize:当框架或窗口大小发生变化时触发。
7.scroll:当用户滚动元素时发生。混杂模式下,可以通过<body>元素的scrollLeft和scrollTop来监控到这一变化。 标准模式下,通过<html>元素来反应这一变化除了safari。
EventUtils.addHandler(window, 'scroll', function(event) {
if (document.compatMode =='CSS1Compat') {
alert(document.documentElement.scrollTop)
} else {
alert(document.body.scrollTop)
}
})
二、焦点事件
常用的焦点事事件包括blur,focus。
1.blur:元素失去焦点时触发
EventUtils.addEvent(body.getElementById('test'), 'blur', function(){ console.log('test is blur')});
2. focus:元素获取焦点时触发,此方法不冒泡。
EventUtils.addEvent(body.getElementById('test'), 'focus', function(){ console.log('test is focus')});
三、鼠标和滚轮事件
1.click:点击事件,单击。
2.dbclick:双击事件。
3.mouseenter:鼠标移入元素事件
4.mouseleave:鼠标移出元素事件
5.mousemove:鼠标移动事件
注:
1)在同一元素上相继触发mousedown和mouseout事件,才能触发click事件。
2)事件触发的顺序:mousedown =>mouseup => click => mousedown => mouseup => dbclick
3)IE8及以前版本中的触发顺序:mousedown => mouseup => click => dbclick