Отключить сенсорную прокрутку в 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()});
Предполагая, что имя вашего терминального объекта - "термин".