跨浏览器的事件处理程序
基本原则:使用能力检测;
为保证处理时间的代码能在大多数浏览器下运行,只关注冒泡阶段是很好的选择;
结合 DOM 0 级方法、DOM 2 级方法或 IE 方法来添加事件,使用能力检测向后兼容
var EventUtil = { addEventHandler: 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; } }, removeEventHandler: function(element, type, handler) { if (element.removeEventListener) { element.removeEventListener(type, handler, false); } else if (element.detachEvent) { element.detachEvent('on' + type, handler); } else { element['on' + type] = null; } } }以上代码的局限性:没有考虑各个事件处理程序的作用域问题
HTML事件处理程序关联作用域:document、(this.form)、this element- DOM 0 级事件处理程序关联作用域:
this element - DOM 2 级事件处理程序关联作用与:
this element - IE 事件处理程序关联作用域:
window