Событие Touch/Tap на SurfacePro с DojoToolkit не работает

У меня есть следующий код (см. https://jsfiddle.net/1acx22tx/1/):

Мой HTML

<div id="myElement" style="padding: 20px; background: #abcdef;">tap me (only 
works with touch device)</div>

Мой (сокращенный) скрипт

require({...}, ["dojo/on", "dgrid/util/touch"], function(on, touchUtil){
    on(document.getElementById("myElement"), touchUtil.tap, function(ev) {
        alert("TAP WORKS!");
    }); 
});

Я хочу обнаружить событие TAP с помощью утилиты dgrid touch (у меня есть содержимое в dgrid, пример размечен до необходимых элементов). Я не могу использовать touch.press потому что это вызвало бы "щелчок" элемента при прокрутке таблицы.

Теперь у меня есть рабочее (на мой взгляд, уродливое) "решение" (на рабочем столе, IPhone / Safari и SurfacePro) с использованием dojo / имеет "обнаружение функций", которое выглядит следующим образом:

require({...}, ["dojo/on", "dojo/has", "dojo/touch", "dgrid/util/touch"], function(on, has, touch, touchUtil){

    if (has("touch")) {
        if (has("safari")) {
            clickEvent = touchUtil.selector(".dgrid-row-table", touchUtil.tap);
        } else {
            clickEvent = touch.release;
        }
    } else {
        clickEvent = ".dgrid-row-table:click";
    }
    on(document.getElementById("myDgrid"), clickEvent, function(event) {
        ...
    }
});

Я не очень доволен этим решением. Кто-нибудь знает, что я делаю не так в первую очередь?

0 ответов

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