Heim  >  Artikel  >  Web-Frontend  >  Wie kann der Mousemove-Ereignisfehler unter Chrome in jQuery perfekt gelöst werden?

Wie kann der Mousemove-Ereignisfehler unter Chrome in jQuery perfekt gelöst werden?

黄舟
黄舟Original
2017-06-28 10:41:042859Durchsuche

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

Der Zweck der Verwendung von jq besteht darin, .data() in allen Browsern zu verwenden. Das ist die Denkweise, die Sie selbst ändern können.
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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn