如何通过触摸xterm.js禁用滚动?
我在term.element上有一个touchmove事件,它通过滑动适当的方向来模拟光标键。这在使用“备用屏幕缓冲区”的应用程序(如午夜指挥官)中非常有用,但在具有回滚(例如lynx或bash )的默认屏幕缓冲区中,除了发送箭头键的ansi代码外,它还滚动终端(通常是这样)。
我需要重写这种行为,这样滚动就不会在你滑动时发生,而不会通过其他方式阻止滚动,比如鼠标轮或滚动条,或者干扰其他鼠标事件(可能还会影响到事件)。
在事件中尝试了preventDefault(),甚至尝试将它附加到终端parentNode及其parentNode中的各种元素。同样的行为。也尝试过的位置:绝对和底部: 0px,但是xterm.js模拟终端的方式可以得到更好的结果。
有什么想法吗?
发布于 2017-09-27 23:41:01
好的。解决方案是:在touchmove事件的处理程序顶部添加event.stopPropagation()。将其附加到终端元素(即term.element)。忘记覆盖,指针事件:没有,等等,工作完美。没有多余的垃圾。我离开event.preventDefault()还有另一个原因,但我认为只有stopPropagation才能解决这个特殊的问题。
我想补充一句,如果您只想禁用终端上的触摸滚动,您所需要的就是:
term.addEventListener('touchmove',函数(E){e.stopPropagation()})
假设你的终端对象的名字是“术语”。
https://stackoverflow.com/questions/46453714
复制相似问题