Событие touchmove/MSPointerMove не запускается в Windows 8

Я всего лишь скромный программист унифицированных коммуникаций, который пытается собрать небольшой веб-интерфейс для своего босса. Пока у меня все работает, за исключением возможности выбора квадрата на холсте с помощью сенсорного ввода.

Это на планшете Samsung Slate 7 под управлением Windows 8 и IE10

Я сократил код почти до самого необходимого:

var cxt;
var c;

window.onload = function () {

c = document.getElementById('displayCanvas');

cxt = c.getContext('2d');


/*
c.addEventListener("MSPointerUp", mouseUp, false);
c.addEventListener("MSPointerMove", mouseMove, false);
c.addEventListener("MSPointerDown", mouseDown, false);
*/
c.addEventListener("touchend", mouseUp, false)
c.addEventListener("touchmove", mouseMove, false);
c.addEventListener("touchstart", mouseDown, false);

}


function mouseDown(downE) {
    window.console &&  console.log("down");
};


function mouseMove(moveE){
    window.console && console.log("move");
}


function mouseUp() {
    window.console && console.log("end");
}

Я получаю как начальные, так и конечные события, используя как MSPointer, так и «обычные» события касания javascript, однако событие «перемещение» не регистрируется.

Я уверен, что это что-то действительно простое, чего мне здесь не хватает, спасибо, что помогли мне!


person methusalem    schedule 21.08.2012    source источник
comment
Вы пытались просто зарегистрироваться на событие mousemove? (да, я знаю, что это касание, но обычные события касания не реализованы в Windows 8)   -  person Aerilys    schedule 21.08.2012
comment
@Aerilys Да, движение мыши реализовано. Я просто вырезал все, что не касалось напрямую. И нет, это не работает/срабатывает. И в документации сказано, что эти события MSPointer реализованы в IE10?   -  person methusalem    schedule 21.08.2012
comment
Это странно, так как я могу отлично обрабатывать сенсорные события с помощью MSPointer. Следующий код работает для меня github.com/ Neferetheka/Swype-жесты-для-WinJS/blob/мастер/   -  person Aerilys    schedule 21.08.2012
comment
Возможно, я недостаточно ясно выразился, но MSPointerUp и MSPointerDown работают нормально. Не работает MSPointerMove.   -  person methusalem    schedule 21.08.2012


Ответы (2)


Я предполагаю, что вы взаимодействуете со страницей HTML в настольном IE в Windows 8. В настольном IE MSPointerMove не срабатывает на этом холсте, потому что поведение по умолчанию, когда пользователь перемещает палец по экрану, заключается в панорамировании содержимого. Если вы стилизуете холст с помощью следующего фрагмента, ваше событие MSPointerMove должно быть обнаружено.

style="-ms-touch-action: нет"

Вот отличная статья о том, как работать с сенсорным экраном во многих браузерах. http://blogs.msdn.com/b/ie/archive/2011/10/19/handling-multi-touch-and-mouse-input-in-all-browsers.aspx

person Glen Gordon    schedule 22.08.2012

Планшеты Samsung Slate 7 имеют ошибку в старых версиях драйверов, которая может иметь значение. Я видел еще один ответ с пометкой [internet-explorer-10], в котором были подробности. Вы обновили драйвер?

person robocat    schedule 20.10.2012