Я заметил, что в Chrome (я использую Chrome 35.0.1916.114 [ UPDATE: также появляется в "35.0.1916.153 m" ], 64-разрядная версия Windows 7), когда я нажимаю налево кнопка не только событие mouseDown, поднятое (как я ожидаю), но и mouseMove.
В эта скрипка, если вы щелкнете по элементу ввода, вы увидите "D" для каждого поднятого события mouseDown и "M" для каждый 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>";
}
}
В FF и IE11, когда курсор находится во входном элементе, вы сможете получить последовательный "D" (т.е. щелчок вызывает одно событие mouseDown). В Chrome каждый щелчок мыши вызывает события mouseDown и два события mouseMove.
Это не из-за небольшого колебания мыши, поскольку я использую трекбол, поэтому курсор абсолютно неподвижен.
Кто-нибудь знает об обходном пути для этого?
Спасибо Dave