ホームページ >ウェブフロントエンド >jsチュートリアル >jQuery パート 7 を読んでください。どのマウス ボタンがクリックされたかを判断するコード_jquery

jQuery パート 7 を読んでください。どのマウス ボタンがクリックされたかを判断するコード_jquery

WBOY
WBOYオリジナル
2016-05-16 18:05:391272ブラウズ

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 は無力になります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。