Heim >Web-Frontend >js-Tutorial >Wie kann der Mousemove-Ereignisfehler unter Chrome in jQuery perfekt gelöst werden?
Es gibt einen Fehler bei Mousemove in Chrome:
1 Wenn das Mouseup-Ereignis ausgelöst wird, einschließlich wenn Klick und Kontextmenü ausgelöst werden, wird auch das Mousemove-Ereignis ausgelöst 2 Noch seltsamer ist, dass das Mousedown-Ereignis durch Mousemove ersetzt wird, wenn Sie kontinuierlich Kontextmenüereignisse auslösen 🎜>Dadurch kann vermieden werden, dass das Klickereignis oder die Mausbewegung ausgelöst wird, die durch das Hochfahren der linken Maustaste verursacht wird, aber die Mausbewegung, die durch das oben beschriebene Kontextmenü verursacht wird, kann trotzdem nicht gelöst werden
Gibt es eine perfekte Lösung? Oder wir können diese Situation nur so weit wie möglich vermeiden
var body = document.querySelector("h1"); var timeStamp; body.addEventListener("mousedown", function (e) { console.log("mouse down"); }, false); body.addEventListener("mouseup", function (e) { console.log("mouse up"); timeStamp = e.timeStamp; }) body.addEventListener("mousemove", function (e) { if (!timeStamp || ( e.timeStamp - timeStamp > 10)) { console.log("mouse move"); } })
Außerdem dürfen keine anderen Ereignisse gebunden werden, nachdem ein Element an die Mausbewegung gebunden wurde.
Abschließend: Versuchen Sie, Mousemove nicht zu verwenden, da es zu viele Ressourcen verbraucht.
<input type="text" id="a1" /> $("#a1").mousemove(function(){ if ($(this).data("x") === event.pageX && $(this).data("y") === event.pageY) { return false; } $(this).data({"x":event.pageX, "y":event.pageY}); $(this).after("1"); })Sie können bestätigen, ob es sich um einen Verschiebevorgang handelt, indem Sie die Position von Mousedown vergleichen
Das obige ist der detaillierte Inhalt vonWie kann der Mousemove-Ereignisfehler unter Chrome in jQuery perfekt gelöst werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!