たとえば、initOther()という関数をロード時に実行したいとします。
通常は、次のようなコードになると思います。
function initOther () {
//何らかの処理
}
window.onload = initOther;
しかし、すでに window.onload に関数が割り当てられている場合、割り当てられている関数が実行されなくなります。
たとえば、
<body onload="initMain()"> ...</body>
とあれば、window.onload = initOther; のために initMain() は実行されません。
そこで、addEventListener() メソッドを使用します。Internet Explorerでは addEventListener() メソッドが使えませんので、代わりに attachEvent() メソッドを使用します。
if (window.addEventListener) { //for W3C DOM
window.addEventListener("load", initOther, false);
} else if (window.attachEvent) { //for IE
window.attachEvent("onload", initOther);
} else {
window.onload = initOther;
}
addEventListener() メソッドと attachEvent() メソッドは登録した関数に実行順序が異なります。
addEventListener() メソッドで登録した関数は、登録順に実行されます。
attachEvent() メソッドで登録した関数は…、実行順の規則がわかりませんでした。