Отключить сенсорную прокрутку в xterm.js

Как я могу отключить прокрутку касанием xterm.js?

У меня есть событие touchmove на term.element, которое имитирует клавиши курсора, проводя в соответствующем направлении. Это прекрасно работает в таких приложениях, как Midnight Commander, которые используют "альтернативный экранный буфер", но в экранном буфере по умолчанию, который имеет прокрутку (например, lynx или bash), он прокручивает терминал (как обычно) в дополнение к отправка ANSI-кодов для клавиш со стрелками.

Мне нужно переопределить это поведение, чтобы при прокрутке не происходила прокрутка, без предотвращения прокрутки другими средствами, такими как колесо мыши или полоса прокрутки, или вмешательства в другие события мыши (и, возможно, события касания).

Попробовал на событии предотвратимую защиту (), даже пытался прикрепить его к различным элементам в терминале, parentNode и его parentNode. Такое же поведение Также опробовано положение: абсолютное с bottom: 0px, но способ, которым xterm.js имитирует терминал, дает превосходные результаты.

Есть идеи?

1 ответ

Решение

Хорошо. Решение: добавьте event.stopPropagation() в верхней части обработчика для события touchmove. Присоедините его к терминальному элементу (т.е. term.element). Забудьте оверлей, события указателя: нет и т. Д. Отлично работает. Никакого дополнительного мусора. Я оставил в event.preventDefault() по другой причине, но я думаю, что только stopPropagation стоит один для этого конкретного вопроса.

Я хотел бы добавить, если вы просто хотите отключить сенсорную прокрутку на терминале, все что вам нужно это:

term.addEventListener ('TouchMove', функция (е){e.stopPropagation()});

Предполагая, что имя вашего терминального объекта - "термин".

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