2014-07-10 9 views
11

Ich habe festgestellt, dass in Chrome (ich verwende Chrome 35.0.1916.114 [UPDATE: tritt auch in "35.0.1916.153 m"], Windows 7 64-Bit), wenn ich auf den linken Knopf klicken, ist nicht nur ein mouseDown Ereignis ausgelöst (wie ich es erwarte), aber auch ein mouseMove.Warum löst Chrome beim Mousedown eine Mausbewegung aus?

In this fiddle Wenn Sie in das Eingabeelement klicken, sehen Sie ein 'D' für jedes mouseDown-Ereignis und ein 'M' für jeden mouseMove.

HTML:

<input id="txt" type="text"/> 
<p>Moves</p><p id="moves">0</p> 
<p>Downs</p><p id="downs">0</p> 
<p id="activity">Activity</p> 

JS:

$("#txt").mousedown(function() { 
    document.getElementById("activity").innerHTML +="D"; 
    update(false,true); 
}); 
$("#txt").mousemove(function() { 
    document.getElementById("activity").innerHTML +="M"; 
    update(true,false); 
}); 

function update(move, down) 
{ 
    var moves=document.getElementById("moves").innerHTML; 
    if (move) 
    { 
     moves ++; 
     document.getElementById("moves").innerHTML=moves; 
    } 

    var downs=document.getElementById("downs").innerHTML; 
    if (down) 
    { 
     downs ++; 
     document.getElementById("downs").innerHTML=downs; 
    } 
    var d=parseInt(downs); 
    var m=parseInt(moves); 
    if ((d+m)%25==0) 
    { 
     document.getElementById("activity").innerHTML +="<br>"; 
    } 
} 

In FF und IE11, sobald der Cursor in das Eingabeelement ist, dann werden Sie in der Lage sein, in Folge ‚s D'zu bekommen (dh ein Klick Raises ein einzelnes mouseDown-Ereignis). In Chrome löst jeder Mausklick ein mouseDown- und zwei mouseMove-Ereignisse aus.

Dies liegt nicht an einem leichten Wackeln der Maus, da ich einen Trackball verwende, so dass der Cursor absolut stationär ist.

Kennt jemand eine Problemumgehung dafür?

Dank Dave

+0

Vielleicht denkt Chrome daran, die Maustaste zu drücken eine "Bewegung", da Sie die Maustaste und die Maus bewegen ... ... ... egal. – BoltClock

+0

Nicht in meiner Version von Chrome passiert: 35.0.1916.153 (Official Build 274914) auf Linux –

+0

@RobbyCornelissen Ich bin auf "35.0.1916.153 m" und es passiert wie oben beschrieben. Mein Kollege ist auf der gleichen Version und wenn man eine Maus (kein Trackball) benutzt, wird jedes mouseDown von einem (nicht zwei) mouseMoves begleitet. Welches Eingabegerät verwenden Sie? – Badgerspot

Antwort

4

seltsame Frage in der Tat, aber mit einem Fähnchen dies umgangen werden kann: http://jsfiddle.net/3a28p7ek/

die Änderung ziemlich geradlinig ist, nach unten ignoreNextMove zu true auf jeder Maus Einstellung und die Bewegung Handler Cancelling Wenn dieses Flag gesetzt ist, nachdem das Flag zurückgesetzt wurde, so dass reguläre Bewegungsereignisse korrekt behandelt werden:

+1

sollte funktionieren, aber ich hoffte, eine Antwort zu finden, die befriedigender ist – Mephiztopheles

Verwandte Themen