ChromeとFFの中クリックとclick
イベントに関する、私が見ている動作のJSFiddleです。いくつかのケースでミドルクリックで「クリック」が発生しないのはなぜですか?
ちょっとみかん
アプローチ1作品「クリック」:a
要素に直接click
ハンドラをバインドし、ミドルクリックはChromeではなく、FFでハンドラをトリガしますが。
$('div a').on('click', function(ev) {
// middle click triggers this handler
});
アプローチ2:1以上のa
が含まれているdiv
に委任click
ハンドラをバインドします。中クリックはでなく、はこのハンドラーをChromeまたはFFで起動します。 DIVが空から始まりとa
要素はAJAX呼び出しによって、またはいくつかのユーザ入力の結果として、後に充填されている場合
$('div').on('click', 'a', function(ev) {
// middle click doesn't trigger this handler
});
このアプローチは非常に貴重です。
'のmouseupは' 両方のブラウザで動作する代わりにclick
原因アプローチ1と2の両方のmouseup
を使用して
に動作します。
// Approach 1 w/ mouseup
$('div a').on('mouseup', function(ev) {
// middle click **does** trigger this handler in Chrome and FF
});
// Approach 2 w/ mouseup
$('div').on('mouseup', 'a', function(ev) {
// middle click **does** trigger this handler in Chrome and FF
});
ここmouseup
とJSFiddleです。
mouseup
はほぼclick
なので、これは面白く便利な場合もあります。しかしmouseup
はclick
ではなく、私はclick
の動作の後です。私はのハックなmousedown; setTimeout; mouseup
シミュレーションを作成したくありません。
私は答えが「いいえ」と確信していますが、中クリックでトリガーするクロスブラウザーの方法がありますclick
ハンドラー?そうでない場合、なぜその理由がありますか?
私はあなたの答えに感謝します。しかし、私は「私はハックなマウスを作成したくないです。setTimeout; mouseup」のシミュレーションをクリックしてください。クリックを再開するのは悪い考えですが、私は長所と短所を重視します。 – mwcz
そして、私は自分の答えで、真ん中のボタンのクリックを捕捉する唯一の信頼できる方法だと述べましたが、選択肢はありません。 – adeneo
==の代わりに===比較を使用する必要がありますか?どうして?ありがとう。 –