Top / Programming / JavaScript / イベントに処理を追加する

イベントに処理を追加する

たとえば、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() メソッドで登録した関数は…、実行順の規則がわかりませんでした。