【JavaScript】 DOM:たとえばこんなイベントハンドラの操作 addEventListener、removeEventListener(attachEvent、detachEvent)
2007.05.25 Author: たわばがに
ということで、三度、JavaScriptのDOMスクリプティングネタです。
今回はイベントハンドラの操作に使う addEventListener、removeEventListener、attachEvent、detachEvent の「たとえばこんな使い方?」みたいなものを書いてみました。
まずは毎度おなじみ、サンプル。
これを実際にセットしてみました。
ボタンをクリックする前後で、グレー部分をクリックした時の反応を見てみてください。
以下のような反応になることが確認できたかと思います。
・クリックイベントを追加ボタンを押す前
-クリックしても何もおきない。
・クリックイベントを追加ボタンを押した後
-クリックすると、alert表示。
・クリックイベントを消去ボタンを押した後
-クリックしても何もおきない。
このサンプルでは、addEventListener、removeEventListener、attachEvent、detachEvent の4つを使い、クリックイベントのイベントハンドラを操作しています。
addEventListener または attachEvent でイベントハンドラの追加、
removeEventListener または detachEvent でイベントハンドラの消去を行っています。
書式はほぼ同じで、第一引数にはイベントの種類(addEventListener と attachEvent で若干記述が異なります)を、第二引数にはイベント発生時に実行させたい関数を指定します。
attachEvent と detachEvent は InternetExplorer 用。
addEventListener と removeEventListener はそれ以外用です。
なお、上記サンプルは、Winでは InternetExplorer(Ver6以上) と Firefox 。Macでは Safari と Firefox で動作確認済です。
これを使えば色々と面白いものが作れそうですね。
‥‥まぁ、何を作るかはその人次第ですが。
以上、偏ったDOMネタでした。
名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ
今回はイベントハンドラの操作に使う addEventListener、removeEventListener、attachEvent、detachEvent の「たとえばこんな使い方?」みたいなものを書いてみました。
まずは毎度おなじみ、サンプル。
<script type="text/javascript">
<!--
// クリックイベント追加
function addClickEvent() {
o = document.getElementById("hoge");
if (o.addEventListener) {
// IE以外
o.addEventListener("click", alertHoge, false);
} else {
// IE
o.attachEvent("onclick", alertHoge);
}
document.getElementById("hage1").disabled = true;
document.getElementById("hage2").disabled = false;
}
// クリックイベント消去
function removeClickEvent() {
o = document.getElementById("hoge");
if (o.removeEventListener) {
// IE以外
o.removeEventListener("click", alertHoge, false);
} else {
// IE
o.detachEvent("onclick", alertHoge);
}
document.getElementById("hage1").disabled = false;
document.getElementById("hage2").disabled = true;
}
// アラート
function alertHoge() {
alert("hogeほげ");
}
//-->
</script>
<input type="button" id="hage1" value="クリックイベントを追加" onClick="addClickEvent()">
<input type="button" id="hage2" value="クリックイベントを消去" onClick="removeClickEvent()" disabled><br>
<br>
<div id="hoge" style="width:200;height:100;background-color:#eeeeee;"></div>
これを実際にセットしてみました。
ボタンをクリックする前後で、グレー部分をクリックした時の反応を見てみてください。
以下のような反応になることが確認できたかと思います。
・クリックイベントを追加ボタンを押す前
-クリックしても何もおきない。
・クリックイベントを追加ボタンを押した後
-クリックすると、alert表示。
・クリックイベントを消去ボタンを押した後
-クリックしても何もおきない。
このサンプルでは、addEventListener、removeEventListener、attachEvent、detachEvent の4つを使い、クリックイベントのイベントハンドラを操作しています。
addEventListener または attachEvent でイベントハンドラの追加、
removeEventListener または detachEvent でイベントハンドラの消去を行っています。
書式はほぼ同じで、第一引数にはイベントの種類(addEventListener と attachEvent で若干記述が異なります)を、第二引数にはイベント発生時に実行させたい関数を指定します。
attachEvent と detachEvent は InternetExplorer 用。
addEventListener と removeEventListener はそれ以外用です。
なお、上記サンプルは、Winでは InternetExplorer(Ver6以上) と Firefox 。Macでは Safari と Firefox で動作確認済です。
これを使えば色々と面白いものが作れそうですね。
‥‥まぁ、何を作るかはその人次第ですが。
以上、偏ったDOMネタでした。
名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ
