Beste Weg zu laufen, mousemove nur auf mousedown-mit reinem javascript?
Will ich keine unnötigen Schleifen auftretende mousemove
Veranstaltung. So wurde ich daran interessiert, in Bezug auf Leistung/best practice was wäre der beste Weg zu laufen mousemove
nur während mousedown == true
? Derzeit bin ich mit:
var pressedMouse = false;
myObject.addEventListener("mousedown", function(e){
mouseDownFunction(e);
pressedMouse = true;
myObject.onmousemove = function(e) {
if(pressedMouse == true){
mouseMoveFunction(e);
}
}
});
myObject.addEventListener("mouseup", function(e){
pressedMouse = false;
});
mouseMoveFunction()
wird nicht genannt, weil der pressedMouse
variable. Kann onmousemove
Ereignis verhindert feuern wenn mousedown
nicht im Einsatz?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie verhindern, dass das onMouseMove-Funktion, die aufgerufen werden, indem Sie es aus dem Hörer:
addEventListener
?Da Sie werden das hinzufügen eines event-handler und dann, es zu entfernen, möglicherweise, über und über, definieren die mouseMove Funktion zuerst bereit zu akzeptieren, dass ein event-Objekt:
Jetzt können Sie nur fügen Sie einen Verweis auf diese Funktion, anstatt die Schaffung einer neuen anonymen Funktion, die nennt es, wenn mousedown aktiviert. Und da haben wir den Verweis, wir könnten genauso gut verwenden Sie die standard-add/remove-EventListener-Methoden.
In event-Objekt eine Eigenschaft namens 'die' was gibt an, welche Schaltfläche wird gedrückt, während der Maus verschieben. Nutzen Sie diese, um zu bestimmen, ob einige der Betrieb während der mousemove oder nicht.
mousemove
von selbst feuern, ohnemousedown
Veranstaltung?Was Sie tun, in der oben jedesmal, wenn der browser feststellt, dass ein mousedown-Ereignis, das Sie hinzufügen einen Ereignis-listener für Maus verschieben.
Dies kann crippple Ihre Leistung..sagen wir Sie haben 1000 Maus nach unten, dann dann browser hinzufügen wird ein mousemove-Ereignis 1000 mal
Erstellen Sie eine separate Ereignis-listener für das Ereignis mousemove (einmal)