<script type="text/javascript">
/**
* Attach an event handler on a given Node taking care of Browsers Differences
* @param {Object} node
* @param {String} type
* @param {Function} fn
* @param {Boolean} capture
*/
function addEventHandler(node,type,fn , capture){
if(typeof window.event !== "undefined"){
/* Internet Explorer way */
node.attachEvent( "on" + type, fn );
} else {
/* FF & Other Browsers */
node.addEventListener( type, fn , capture );
}
}
/* Example */
addEventHandler(window,"load",function(){
alert("The page was loaded");
},true)
</script>
这比使用传统的“window.onload”事件更好,因为它可以将多个事件处理程序附加到单个事件,并且所有这些处理程序都会被调用。
这被认为是一种不稳定的将事件处理封装到函数中的方法。attachEvent & addEventListener的工作方式不同,会导致问题,请参阅此处以获取良好的解释 http://www.quirksmode.org/blog/archives/2005/08/addevent_consid.html
Ryan是对的,这可能不稳定,并且仅在您不会遇到其他事件问题(例如按键)时才应使用。否则,if语句应反转,以便W3C方法优先。否则,当您使用IE9+(它们正确地处理事件)时,您会强制IE使用旧方法。