Событие 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) {
...
}
});
Я не очень доволен этим решением. Кто-нибудь знает, что я делаю не так в первую очередь?