Ответ 1
Я заметил, что огонь mousemove
срабатывает одновременно или на очень коротком расстоянии (10 миллисекунд) после mousedown
pr mouseup
.
Таким образом, возможная работа заключается в использовании event.timeStamp
для mousemove
для сравнения.
Следующий script проверить, если событие mousemove
запущено "в ближайшее время" и соответственно распечатать результат в консоли.
Другим возможным решением может быть проверка положения мыши, когда выполняется cb для mousemove
.
Оба решения - это всего лишь работа с этим Ошибка Chrome.
Решение на основе timeStamp:
http://jsbin.com/jedotomoxu/1/
Решение на основе положения мыши:
http://jsbin.com/dinororaju/1/
<script>
var timeDownUp = null;
function start() {
document.documentElement.addEventListener('mousedown', function (event) {
timeDownUp = new Date().getTime();
console.log('mousedown', event.pageX, event.pageY, event.timeStamp);
}.bind(this));
document.documentElement.addEventListener('mouseup', function (event) {
timeDownUp = new Date().getTime();
console.log('mouseup', event.pageX, event.pageY, event.timeStamp);
}.bind(this));
document.documentElement.addEventListener('mousemove', function (event) {
var timeMove = new Date().getTime();
timeDownUp += 10;
if (timeMove > timeDownUp) {
console.log('mousemove', event.pageX, event.pageY, event.timeStamp);
if (event.which === 1) {
console.log('mousemove DRAG', event.pageX, event.pageY, event.timeStamp);
}
} else {
timeDownUp = null;
}
}.bind(this));
}
</script>