我们常用的事件类型有UI事件,焦点事件,鼠标事件,滚轮事件,键盘事件和文本事件,用了跨浏览器添加事件处理程序的方法来小试一下哦,大概思路是先定义一个对象,里边包含了两个方法,添加事件处理程序和移除事件处理程序,并且做到了跨浏览器使用,我在该对象的基础上添加了一些常用的事件的处理程序,可以直接拿过去用哦,当然还有一些不太常见的(例如复合事件,变动事件等等)此处没做过多尝试
//html
<body>
<button id="btn">button</button>
<input type="text" id="in">
</body>
//JavaScript
window.onload = function () {
var btn = document.getElementById('btn');
var input =document.getElementById('in');
var EventUtil = {
addHandler: function (element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false)
}
else if (element.attachEvent) {
element.attachEvent('on' + type, handler)
}
else {
element['on' + type] = handler;
}
},
removeHandler: function (element, type, handler) {
if (element.addEventListener) {
element.removeEventListener(type, handler, false)
}
else if (element.attachEvent) {
element.detachEvent('on' + type, handler)
}
else {
element['on' + type] = null;
}
}
};
function handler(event) {
console.log(event.type);
}
//常见UI事件
EventUtil.addHandler(window, 'load', handler);//页面加载后触发,也可以是当所有框架加载完,图像加载完触发
EventUtil.addHandler(window, 'unload', handler);//页面卸载后触发,也可以是当所有框架卸载完,图像卸载完触发,只要用户从一个页面切换到另一个页面就会发生unload事件
EventUtil.addHandler(window, 'resize', handler);//浏览器窗口被调整到一个新的高度时触发
//常见焦点事件
EventUtil.addHandler(btn, 'blur', handler);//元素失去焦点时触发,不支持冒泡
EventUtil.addHandler(btn, 'focus', handler);//元素获得焦点时触发,不支持冒泡
EventUtil.addHandler(btn, 'focusin', handler);//元素获得焦点时触发,支持冒泡
EventUtil.addHandler(btn, 'focusout', handler);//元素失去焦点时触发,支持冒泡
//鼠标与滚轮事件
EventUtil.addHandler(btn, 'click', handler);//单击主鼠标按钮或者按下回车时触发
EventUtil.addHandler(btn, 'dbclick', handler);//双击主鼠标按钮时触发
EventUtil.addHandler(btn, 'mousedown', handler);//按下任意鼠标按钮时触发
EventUtil.addHandler(btn, 'mouseenter', handler);//鼠标光标首次从元素外部移动到元素范围之内时触发
EventUtil.addHandler(btn, 'mouseleave', handler);//位于元素上方的鼠标光标移动到元素范围之外时触发
EventUtil.addHandler(btn, 'mousemove', handler);//鼠标光标在元素内部移动时重复触发
EventUtil.addHandler(btn, 'mouseout', handler);//位于元素上方的鼠标光标移动到另一个元素时触发
EventUtil.addHandler(btn, 'mouseover', handler);//鼠标指针位于一个元素外部,首次将其移入另一个元素边界之内时触发
EventUtil.addHandler(btn, 'mouseup', handler);//释放鼠标按钮时触发
EventUtil.addHandler(btn, 'mousewheel', handler);//可指定给页面中的任何元素或者document对象,当用户通过鼠标滚轮与页面交互,垂直方向上滚动页面时就会触发
//键盘与文本事件
EventUtil.addHandler(btn, 'keydown', handler);//按下键盘上的任意键触发,按住不放会重复触发
EventUtil.addHandler(btn, 'keypress', handler);//按下键盘上的字符键时触发,按住不放会重复触发
EventUtil.addHandler(btn, 'keyup', handler);//释放键盘上的键时触发
EventUtil.addHandler(input, 'textInput', handler);//DOM3引入的,在可编辑区域中输入字符时触发,用于代替keypress,不同是keypress能被任何可以获得焦点的元素触发,但只有可编辑区域才能触发textInput
};