<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>
Dies ist besser als die traditionelle „window.onload“-Methode, da sie mehrere Event-Handler an ein einzelnes Ereignis anhängen kann und alle aufgerufen werden.
Dies ist bekanntermaßen eine fehleranfällige Methode zur Kapselung des Event-Handlings in eine Funktion. attachEvent & addEventListener funktionieren nicht auf die gleiche Weise und verursachen Probleme. Eine gute Erklärung finden Sie hier: http://www.quirksmode.org/blog/archives/2005/08/addevent_consid.html
Ryan hat Recht, dies kann fehleranfällig sein und sollte nur verwendet werden, wenn Sie keine anderen Event-Probleme wie Tastendrücke haben. Andernfalls sollte das `if` umgekehrt werden, sodass der W3C-Ansatz zuerst kommt. Andernfalls zwingen Sie IE in den Legacy-Ansatz, wenn Sie IE9+ treffen, der Event-Handling korrekt durchführt.