在Chrome浏览器中启用触摸屏触摸事件

5

我有一台配备24英寸触摸屏的Ubuntu机器,它工作正常。我可以移动鼠标、进行多点手势等操作,所以硬件方面没有问题。现在我想知道是否可以让浏览器将事件解释为触摸事件而不是mousedown、mousedrag等事件。HTML5对于触摸和多点触控有很好的支持,我想为这个设置开发Web应用程序。有人知道如何实现吗?我已经尝试启用--enable-touch-events开关,但没有成功。尽管似乎这只在ms windows版本中实现了。

~$ xinput -version
xinput version 1.6.0
XI version on server: 2.2

~$ xinput
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Advanced Silicon S.A CoolTouch(TM) System id=9    [slave  pointer  (2)]
⎜   ↳ USBest Technology SiS HID Touch Controller    id=10   [slave  pointer  (2)]
⎜   ↳ Logitech USB Optical Mouse                id=11   [slave  pointer  (2)]
⎜   ↳ MCE IR Keyboard/Mouse (nuvoton-cir)       id=14   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ CHICONY HP Basic USB Keyboard             id=12   [slave  keyboard (3)]
    ↳ Nuvoton w836x7hg Infrared Remote Transceiver  id=13   [slave  keyboard (3)]

我读过关于使用触摸UI标志进行构建的内容,但我不确定它是否有帮助?

2个回答

2

在使用GTK构建时,Chrome不支持Linux上的触摸屏。从Chrome 35开始,Linux不再使用GTK,而是构建在与Windows和ChromeOS相同的UI框架(“Aura”)上。这意味着现在应该正确支持触摸屏(尽管我经常在Ubuntu中看到触摸屏错误,特别是在使用多个显示器时)。


1

请查看http://www.html5rocks.com/en/mobile/touchandmouse/以获取有关您问题的良好答案。

您说

我尝试启用--enable-touch-events开关

您是否使用该命令行开关启动了Chrome?

也许您指的是以下内容,在您的情况下使用它并不是错误的选择,因为您想要接收真正的触摸事件。

https://developers.google.com/chrome-developer-tools/docs/mobile-emulation#emulate-touch-events

尝试在JavaScript控制台中使用安装了任何您感兴趣的事件类型的小事件处理程序进行实验(如下所示)。

["click", "mousemove", "touchmove"].forEach(function(value, index, object) {
    document.addEventListener(value, function(event) {
        console.log(JSON.stringify([event.type,
            event.srcElement.localName + (event.srcElement.id ? '#'
            + event.srcElement.id : "")
            + (event.srcElement.classList.length ? '[class='
            + event.srcElement.classList + ']' : ""),
            (new Date(event.timeStamp)).toJSON()]));
    }, false);
});

这有帮助吗?

啊,https://code.google.com/p/chromium/issues/detail?id=138195 似乎回答了我的关于--enable-touch-events的问题。 - stackunderflow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接