禁用xterm.js中的触摸滚动

时间:2017-09-27 17:17:04

标签: xtermjs

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

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

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

尝试对事件执行preventDefault(),甚至尝试将其附加到终端,parentNode及其parentNode中的各种元素。相同的行为。也试过位置:绝对底部:0px,但xterm.js模拟终端的方式会产生异常结果。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

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

term.addEventListener(' touchmove',函数(E){e.stopPropagation()});

假设您的终端对象的名称是' term'。