jQuery は標準の button 属性を削除して、that を使用しましたが、これは少し不可解です。
は Firefox によって導入され、IE ではサポートされていません。本来の目的はキーボードのキー値(keyCode)を取得することです。
jQuery では、キーボードのキー値またはマウスのキー値になります。
つまり、どれはユーザーがキーボードのどのキーを押したかを判断するときに使用でき、どれはユーザーがマウスのどのキーを押したかを判断するときにも使用できます。これには 2 つの目的があります。
ソースコード
// どれを追加しますかキーイベントの場合
if (event.that == null && (event.charCode != null ||event.keyCode != null) ) {
event.that =event.charCode != null event.charCode ? :event.keyCode ;
}
// クリック用に次の値を追加します: 1 === 左; 2 === 右
// 注: ボタンは正規化されていません
if ( !event.that &&event.button !== unknown ) {
event.that = (event.button & 1 ? 1 : (event.button & 2 ? 3 : (event.button & 4 ? 2 : 0 ) ));
}
標準のボタンは、マウスの左、中、および右ボタンを表すために 0、1、2 を使用します。 1、2、3を使用するjQuery。
もう 1 つの不快な点は、jQuery ドキュメント
event.that がマウス ボタンの値を表すものについては言及しておらず、キーボード ボタンの値についてのみ言及していることです。
ソースコード内のコメントも誤解を招くものです。
// クリック用に追加: 1 = == left ; 2 === middle; 3 === right
これはクリック イベントを使用するのが簡単ですが、実際にはクリックの取得です。イベントが間違っています。
以下のクリック イベントを使用してみてください:
本文>
本文>
クリックイベントを使用すると、jQueryが想像する左、中、右キーの1、2、3の値に対応していないことがわかります。ブラウザごとにばらつきがあり、右クリックが全く取得できなくなったり、Safariではアラートが出続けたりします。
したがって、jQuery のビジョンを達成するには、mousedown / Mouseup イベントを使用する必要があります。 jQueryのコメントは誤解を招きます。
测试结果
|
IE6/7/8 |
IE9 |
Firefox4 |
Chrome12 |
Safari |
Opera |
点击左键 |
0 |
1 |
1 |
1 |
1(不停弹出alert) |
1 |
点击中键 |
不响应 |
2 |
2 |
2 |
2(不停弹出alert) |
不响应 |
点击右键 |
仅弹出右键菜单 |
仅弹出右键菜单 |
3,弹出右键菜单 |
仅弹出右键菜单 |
仅弹出右键菜单 |
仅弹出右键菜单 |
また、Operaではmousedown/mouseupイベントを使用しても中ボタンの値は取得できません。 Opera のひどい慣行により、jQuery は無力になります。