シングルクリック・ダブルクリック・右クリックで別処理を行ないたい(希望)
今までこんな↓設定で「参加者リストの名前をクリックすると”ささやき”モード」としていたのですが、
<span id="Cake" class="member" onclick="inputWhisper('Cake','');">Cake</span>
ここにondblclickを追加すると、onclickイベントも同時に拾ってしまう(FireFox3.5)
うぐぐ。
ここ作り直して、どうせなら、左クリック・右クリック・ダブルクリック全対応にしてやろう!
・・・・と思って、調べてみました。
クロスブラウザ問題
判明。
クロスブラウザがキツい。
http://programming-magic.com/?id=189
IE/Chrom/safari組と、FireFox/Operaで、挙動が激しく違う。
FireFox/Operaで右クリック拾おうとすると、Contextmenu一択になる模様。
http://d.hatena.ne.jp/higeorange/20090317/1237273929
別の情報だと、Operaはもっと厳しい説も・・・・
「FireFoxで右クリックすると、 クリックイベントと右クリックイベントの両方が発生します。 そのため、クリック時、右クリック時で処理を分けるといったことはできません。」
とあるのですが、「右ダブルクリック」だと、「右クリックイベント」として検出されます。
つまりここの方法なら、左シングルクリックとダブルクリックは区別がついてるのでは・・・・?
そして、「クリックイベントと右クリックイベントの両方が発生します」ならば、分岐次第でなんとかならないでしょうか。
とは思いましたが、厄介そうなのでw
Javascript純正(?)での実装はさくっと諦めてw、
jQuery様にお伺い〜
有用そうな情報が出てきました。
http://stacktrace.jp/jquery/api/events/dblclick%28%29.html
http://www.arakifamily.net/web/ajax/23.html
下のほう、jQuery本線の修正入れてますが、2008年情報なので、本線が直ってる可能性も低くない。
と、いうことで、jQueryで検討してみました。
が。
やっぱり無理?@シングル&ダブルクリック識別
jQuery様も、シングルクリックとダブルクリックの区別は困難の模様(T-T)
実際、以下の通りやってみても、IE/Fxとも、シングルクリックが優先します・・・・
$(".member").dblclick(function(ev){
alert(ev.type);
alert($(this));
}
);
$(".member").click(function(ev){
alert($(this).attr("id"));
}
);
(一部はしょってます)
ふたたびグーグル先生お問い合わせ。。。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1324211678
なんか絶望的っぽい (/-T)
右クリックかなあ・・・・