私はW3CとMSによって作成されたマウスボタンでこの混乱を嫌います! mousedownイベントが発生したときにマウスの左ボタンが押されたかどうかを知りたい。
私はこのコードを使用します
// Return true if evt carries left mouse button press
function detectLeftButton(evt) {
// W3C
if (window.event == null) {
return (evt.button == 0)
}
// IE
else {
return (evt.button == 1);
}
}
ただし、OperaおよびChromeでは動作しません。window.eventもそこに存在するためです。
だから私は何をしますか?ブラウザーはある程度検出されていますが、一部のブラウザーが最近行っているすべてのマスキングでは信頼できないことがわかっています。マウスの左ボタンを確実に検出するにはどうすればよいですか?
更新された回答。以下は、左マウスボタンのみが押されているかどうかを検出します。
function detectLeftButton(evt) {
evt = evt || window.event;
if ("buttons" in evt) {
return evt.buttons == 1;
}
var button = evt.which || evt.button;
return button == 1;
}
JavaScriptでのマウスイベントの処理の詳細については、 http://unixpapa.com/js/mouse.html を試してください。
現在、 W3C標準event.buttons
プロパティがサポートされています 標準モードのIE9 、および Gecko 15 + 。
W3Cは完全に詰め込まれています event.buttonプロパティを上げるため、標準に準拠したブラウザーではevent.buttonは0ですが、標準より前に作成されたブラウザーではevent.buttonは1です。
したがって、コードmustは、古いブラウザーを除いてevent.button
の使用を避けます。次のコードが機能するはずです。
function detectLeftButton(event) {
if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) {
return false;
} else if ('buttons' in event) {
return event.buttons === 1;
} else if ('which' in event) {
return event.which === 1;
} else {
return (event.button == 1 || event.type == 'click');
}
}
次のコードを使用できます-
onmouseup="if(window.event.which==1){//code for left click}
else if(window.event.which==3){//code for right click}"
Event.buttonsがChromeで機能するようになりましたが、Safariはまだサポートしていません。回避策の1つは、次のようなドキュメントレベルまたは親レベルでonmousedownおよびonmouseupイベントを使用することです。onmousedown = "bMouseDown = true" onmouseup = "bMouseDown = false"