Отменить событие сенсорной прокрутки IE9 и вызвать Mousemove, возможно? - PullRequest
3 голосов
/ 09 февраля 2012

На компьютере под управлением Windows 7 с IE9 и мультисенсорным экраном, например, HP TouchSmart, если вы коснетесь экрана на странице, достаточно высокой, чтобы иметь полосу прокрутки, и проведете пальцем вверх или вниз по страницам прокрутки. Похоже, что это не запускает событие перемещения мыши. Если вы дотронетесь до экрана и сначала переместитесь влево или вправо, а не вверх и вниз, это вызовет события мышиной мыши.

Я не хочу отменять эту прокрутку и заставлять браузер вызывать обычное событие mousemove. Это возможно?

РЕДАКТИРОВАТЬ: в IE9 не отображаются события касания Поддерживает ли IE9 события касания в Windows 7?

РЕДАКТИРОВАТЬ 2: Пара других интересных мест по этому поводу. Во-первых, браузеры часто запускают событие колесика мыши, когда прокрутка запускается жестом, его часто можно поймать и отменить. Во-вторых, в этом конкретном случае вы можете предотвратить прокрутку IE9 с помощью этого хака $(document).bind('mousedown mouseup click dblclick', function (e) { });, который, как иногда делают хаки, не имеет никакого смысла для меня - возможно, можно использовать меньше привязок событий, но у меня не было хороший доступ к устройству для удобного тестирования.

Ответы [ 3 ]

1 голос
/ 18 февраля 2012

Потратив некоторое время на тестирование различных методов подавления ответов на события по умолчанию, я понятия не имею, как подавить событие прокрутки.Однако вы должны иметь возможность вызывать событие mousemove из обработчика события прокрутки.

window.onscroll = function(e){
    element.onmousemove();
}

//jquery
$(window).scroll(function(e){ element.mousemove(); } );

A пример примитива .

Я полагаю, вы можете попытаться предотвратить автоматическую прокрутку двумя способами: установить переполнение (или переполнение-y) на скрытыйваш элемент тела или как часть вашего обработчика прокрутки, пытаясь прокрутить обратно к вашей исходной точке.Установка переполнения тела на скрытый предотвратит прокрутку и скроет полосу прокрутки, но я не уверен, что это то, что вам нужно.

0 голосов
/ 09 февраля 2012

У меня была такая же проблема с iPad. Мне пришлось добавить e.preventDefault (); на событие TouchMove. Я сделал это только для div, где я отслеживал взаимодействие, , а не для всей страницы.

element.ontouchmove = function(e){ e.preventDefault(); };

Понятия не имею о вашем устройстве, но, возможно, стоит попробовать.

0 голосов
/ 09 февраля 2012

Попробуйте сенсорные события вместо событий мыши.

...