ドラッグ始点がある場合、MouseDown イベントは MouseUp まで伝達されない。
マウスのボタンを押したとき、ドラッグが発生する場合は、ドラッグ操作を開始するかどうかを正しく判断するために、マウスのボタンが離されるまで、通常、MouseDownイベントの転送をMouseUpイベント発生時まで待つ必要があります。
ドラッグ操作を開始したかどうかを判定するため、MouseDownイベントを発送する前にフラグ変数を利用できます。マウスボタン押下時にフラグ変数をtrueに設定し、MouseMoveイベントの監視を開始します。MouseMoveイベントのハンドラ内で、フラグ変数がtrueかどうかをチェックし、trueの場合にドラッグ操作を実行します。
マウスボタンを離したときにMouseUpイベントが発生する。MouseUpイベントハンドラ内で、マウスのドラッグ操作が終了したことを示すフラグ変数をfalseに設定します。
以下は、この機能を実装する方法を示すサンプルコードです:
var isDragging = false; // 拖动标志变量
document.addEventListener('mousedown', function(e) {
isDragging = true; // 设置拖动标志为true
});
document.addEventListener('mousemove', function(e) {
if (isDragging) {
// 进行拖动操作
}
});
document.addEventListener('mouseup', function(e) {
isDragging = false; // 设置拖动标志为false
});
上記のサンプルコードでは、マウスが押下された時に、isDraggingというドラッグ中フラグがtrueに設定されます。マウス移動イベントハンドラでは、isDraggingの値を確認して、trueであればドラッグ操作が始まっていることとなり、ここでドラッグ処理を行うことができます。マウスボタンがリリースされた時には、isDraggingはfalseとなり、ドラッグ操作が終了したと判断します。
実際の利用においては、必要に応じて上記のサンプルコードをより現実的なものに変更・拡張する必要があることに注意してください。