Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   touch-события (https://javascript.ru/forum/events/62435-touch-sobytiya.html)

Invis1ble 10.04.2016 16:53

touch-события
 
Нужно стриггерить событие touchstart, застрял на создании TouchList. Следуя посту https://www.reddit.com/r/javascript/...a_touch_event/ написал код:
var target = document.body;
var clientX = 0;
var clientY = 0;
var screenX = 0;
var screenY = 0;
var pageX = 0;
var pageY = 0;

var touch = new Touch(undefined, target, clientX, clientY, screenX, screenY, pageX, pageY);
var touchList = new TouchList(touch);


ругается на конструктор TouchList
VM671:12 Uncaught TypeError: Illegal constructor(…)

пробовал также передавать массивом
var touchList = new TouchList([touch]);


ошибка точно такая же.
Пробую в последнем хроме (49), на всякий случай включил эмуляцию смартфона через "Toggle device mode" (но, думаю, дело не в этом).

Подскажите, что неправильно в моём коде :help:

Invis1ble 11.04.2016 13:55

Форум умер? Или ни у кого никаких мыслей нет?

Маэстро 11.04.2016 15:37

Та не используйте Вы это. Оно стрёмное. И может умереть также, как и "document.createTouchList()". Кроме того в других браузерах будет ругаться не только на "new TouchList()", но даже и на "new Touch()".
Используйте простой анализ e.touches и e.touches.length

А ещё желательно предварительно делать проверку наличия механизма касаний экрана:
xxx = 'ontouchstart' in document.documentElement;

Invis1ble 11.04.2016 15:56

Маэстро,
Я пишу код для автоматических тестов собственного опенсорсного продукта. Всё на уровне исследований. Умрёт текущее API - перепишу на новое, это не проблема. Кроссбраузерность не критична, достаточно, чтоб работало хотя бы в одном.

Invis1ble 11.04.2016 21:16

Воспользовался библиотекой
https://github.com/Leaflet/prosthetic-hand
судя по исходнику, TouchList создается не через конструктор, а через обычный массив. Дальше не копал, ибо задача решена, причем лучше, чем я хотел.


Часовой пояс GMT +3, время: 23:07.