onclickと本気とIE
本気でやるならonclick属性は避けてライブラリを活用すべき – id:HolyGrailとid:HoryGrailの区別がつかない日記
個人的には、onclick属性を書くのってCSSでいうと<span style="color:red;text-decoration:underline;">こんにちはこんばんは</span>みたいなもんだと思うので、長所短所もそれに準じる感じ。ただ、ちょっとしたハック(やっつけ仕事)としてやることはあるけど、本気と言うなら外に書くべきだよなあ、とは思う。
ライブラリは流行り廃りが激しいから、特定のライブラリに依存した「おまじない」ばかり覚えているのはどうかと思うなあ
やっぱり、 DOM を直接書けたほうが、知識としては幅広く使えると思いますよ。
それはそうなんだけど、最初からIE向けおまじないを意識しなきゃいけないのは茨の道だと思う。僕はOperaのUser JavaScriptから入ったのでIEが出てきたのは中盤になってからだけど、レベル1の状態でIEが出てきたら即死続出じゃないだろうか。
form=document.getElementsById("targetForm");
// 普通のブラウザ向け
form.addEventListener("submit",function(e){
alert("submitさせないっ");
e.preventDefault();
},false);
// IE向け
form.attachEvent("onsubmit",function(){
alert("submitさせないっ");
window.event.returnValue=false;
});
// クロスブラウザ手抜きver
(function(form){
var _tmp=form.onsubmit || function(){};
form.onsubmit=function(){
_tmp.apply(this,arguments);
alert("submitさせないっ");
return false;
}
})(form)
メソッドから引数からイベントの扱いから、alert以外すべて非互換なんてこんな書き分けは嫌がらせとしか思えない。手抜きverも、挙動を理解してないとたぶん厳しいし毎回こんなの書くのも嫌だ。
IEを無視するためにライブラリから入る、ってのは悪くないと思うなあ。運動のために階段を使う人が居てもいいけど、エレベータも捨てたもんじゃないですよ。
どっちみち何かつくるなら、まずやることは各ブラウザの違いを吸収するラッパー作りになるので、プロダクション環境では既存ライブラリか自作ラッパーかの違いでしかないと思うけど、それはまた別の話か。
おまけ
なぜか誰も正面切って反対してなかったので書いておくけど、<a href="javascript:void(0);" onclick="somefunc();">あいうえお</a>とかやられると、このリンクは新規タブで開いていいのか普通に左クリックしなきゃいけないのか、と毎回判断しなきゃいけないのでやめてください。
<span class="clickable" onclick="somefunc();">あいうえお</span>とかCSSでそれっぽく見せるようにしてください。
こめんと