Backup of blog/2008-07-15 (1) Back
Back to History list
#navi(../)
*onclickはもう古い? [#s0793174]
今まで
<button onclick="action();">ボタン</button>
<script type="text/javascript">
function action(){
alert("ボタンが押されました。");
}
</script>
みたいなHTMLの書き方をしてきたが、Ajax化が当たり前な今、もうこの買い方はスマートではないらしい。ちまたでは、イベントリスナという技法が話題になっている。よく目にする例ではGoogleMapsがそうだ。onclickというソースは無い。で、このソースを代わりにどう書くか?
[[ここ>http://www.kawaz.jp/pukiwiki/?JavaScript%A5%E1%A5%E2]]の資料によると、ヘッダー内に以下のようなソースを記述した上で
function addEventListener(target, type, func) {
if(target.attachEvent) {
target.attachEvent("on" + type, func);
} else if(target.addEventListener) {
target.addEventListener(type, func, true);
} else {
//イベントリスナが使えない場合は on○○ 属性を上書きで妥協(今時あんまし無いと思うが
target["on" + type] = func;
}
}
HTMLがこうだったとすると
<button id="action">ボタン</script>
さきほどのヘッダーのスクリプト内に
addEventListner(action, 'click', function(){alert("ボタンが押されました");});
と記述するらしい。
こうすると、HTMLはかなりすっきりする。