1

如何通过触摸 xterm.js 来禁用滚动?

我在 term.element 上有一个 touchmove 事件,它通过滑动适当的方向来模拟光标键。这在使用“备用屏幕缓冲区”的应用程序(例如 Midnight Commander)中非常有效,但在具有回滚功能的默认屏幕缓冲区(例如 lynx 或 bash)中,它除了滚动终端(如通常那样)之外发送箭头键的 ansi 代码。

我需要覆盖此行为,以便在您滑动时不会发生滚动,而不会阻止通过其他方式(例如鼠标滚轮或滚动条)滚动,或干扰其他鼠标事件(可能还有触摸事件)。

在事件上尝试了 preventDefault(),甚至尝试将其附加到终端、parentNode 及其 parentNode 中的各种元素。相同的行为。还尝试了 position: absolute 和 bottom: 0px,但是 xterm.js 模拟终端的方式会导致异常结果。

有任何想法吗?

4

1 回答 1

0

好的。解决方案是:在 touchmove 事件的处理程序顶部添加 event.stopPropagation()。将其附加到终端元素(即 term.element)。忘记覆盖,指针事件:无等。完美运行。没有额外的垃圾。我出于另一个原因离开 event.preventDefault() ,但我认为只有 stopPropagation 独立于这个特定问题。

我想补充一点,如果您只想禁用终端上的触摸滚动,您只需要:

term.addEventListener('touchmove',function(e){e.stopPropagation()});

假设您的终端对象的名称是“术语”。

于 2017-09-27T23:41:01.917 回答