Обработка нескольких событий указателя в IE11 Metro/Mobile с разрешенными сенсорными действиями pan-x и pan-y

У меня есть веб-приложение, в котором я хочу обрабатывать жест масштабирования в javascript, а не разрешать браузеру масштабировать весь пользовательский интерфейс. Насколько я понимаю, в IE11 вам нужно указать CSS сенсорного действия для элемента, для которого вы хотите обрабатывать события указателя.

В моем приложении я отключил все сенсорные действия, кроме панорамирования (touch-action: pan-x pan-y). Я связал события указателя вниз, указателя и перемещения указателя в javascript и добавил собственные расчеты, чтобы определить уровень масштабирования, который нужно выполнить, основываясь на расстоянии между двумя активными указателями (жест пинч).

В IE11 на рабочем столе это работает именно так, как я ожидал; тем не менее, в мобильной версии IE / метро (я тестировал на Surface Pro) я никогда не смогу обнаружить более одного события указателя в данный момент времени. Он просто запускает указатель отмены на первое захваченное событие и не запускает второй указатель вниз. Если я отключу все сенсорные жесты (touch-action: none), я смогу получать события указателя multi-touch также в мобильном браузере, но он больше не позволяет панорамирование, что нежелательно.

Вот простой jsfiddle, который демонстрирует проблему:

http://jsfiddle.net/wqgg0Ly7/22/

$(document).ready(function()
{
    var pointers = [];

    function pointerDown(e)
    {
        pointers.push(e);

        if (pointers.length >= 2)
            alert("multiple pointers detected");
    };

    function pointerOut(e)
    {
         for (var i in pointers)
             if (pointers[i].pointerId == e.pointerId)
                 pointers.splice(i, 1);
    };

    $(".container")
        .on("pointerdown", pointerDown)
        .on("pointerout", pointerOut)    
        .on("pointercancel", pointerOut);
    });
};

Если вы протестируете это в версии IE11 для настольных ПК на устройстве с сенсорным экраном, вы можете зажать любой из этих DIV, и вы увидите предупреждение об обнаружении двух указателей. Выполняя этот же тест в мобильном телефоне IE11, и только первый DIV обнаружит второй указатель; однако, это не позволяет панорамирование как второй DIV.

Это просто ошибка в IE Metro или есть обходной путь, позволяющий выполнять панорамирование элемента, но при этом захватывать несколько событий указателя?

0 ответов

Другие вопросы по тегам