mousedown された後にmousemoveすることなくmouseupした時に発火するイベントを登録したいのですが、そんなことは可能でしょうか?
addEventListenerの概念からして、条件分岐はできないように思えます。
やりたいことのフローとしては以下のようなコードになります。
document.addEventListener('mousedown', function() { var checkMousemove = false; // デフォはfalse document.addEventListener('mousemove', function() { checkMousemove = true; //mosuemoveがあった際はtrue console.log(checkMousemove); } ); if( !checkMousemove ) { //checkMousemoveがfalseの時 document.addEventListener('mouseup', pageTransition ); } });
しかし、これだとjsファイルロード時にaddEventListener全てが実行されていて、ネストされていませんでした。
何か解決策がありましたらご教授いただけると幸いです。
目的
目的を記述していなくてすみません。
前回、canvas内で、mousedownイベントが効かない問題について質問しました。
https://teratail.com/questions/333161
原因はtrackBollControllsというライブラリの中に、mouse系のイベントをキャンセルする記述が書かれていたので、その行を消したらイベントが有効になり、raycasterで感知したオブジェクトのuserDataであるハイパーリンクを取り出しページ遷移するという機能を実装でき、ここまでは良かったのですが。
canvas内ではドラッグのような挙動でカメラをグリグリ回しているので、ドラッグのような挙動をしたくて一回mousedownするとrayが発射してしまい、それを防ぐためにmouseupイベントに変更したのですが、ドラッグのような挙動が終わってmouseupしたところに3Dモデルがあるとそこでもrayを発射してしまいイベントが発生してしまいます。
それを防ぐために、mousedownしてからmousemoveなしでmouseupした際にイベントを発火できたら良いのではと非エンジニアの方からアイデアをいただいたのですが、うまくいかず。
他に全く違う観点から何か解決策がありましたら知恵を貸していただけると幸いです。

回答3件
あなたの回答
tips
プレビュー