【问题标题】:Firefox on Windows 8 reporting as a touch deviceWindows 8 上的 Firefox 报告为触摸设备
【发布时间】:2014-01-29 09:30:31
【问题描述】:

在我的 Windows 8 台式电脑(非触摸屏)上,Firefox 26 错误地将自己报告为触摸屏设备,而 Chrome 和 IE 等其他浏览器却没有?

使用以下不同的 JavaScript sn-ps,Firefox 总是返回 true,Chrome 总是返回 false。

jQuery.support.touch

这段代码来自 James https://stackoverflow.com/a/4819886/498187

function is_touch_device() {
  return 'ontouchstart' in window // works on most browsers 
      || 'onmsgesturechange' in window; // works on ie10
};

我的问题是,有没有更好的方法来检查触摸屏设备,Firefox 可以理解?

【问题讨论】:

    标签: javascript firefox windows-8 touch


    【解决方案1】:

    在大多数情况下,您的代码在 Firefox 上也应该可以正常工作,'ontouchstart' in window 在 Firefox 中也应该评估为 false,除非您将首选项“dom.w3c_touch_events.enabled”设置为“1”。

    在 Firefox 的地址栏中输入 about:config 并搜索此属性。如果它是 1,则将其设为 0,然后表达式 'ontouchstart' in window 的计算结果应为 false(也许您需要重新启动 firefox)。

    您过去不必将此选项设置为“1”。如果您曾经使用过 Firefox 的开发者工具来模拟触摸事件,那一定是这样做的。但是普通的 Firefox 用户不会这样做,所以我不会担心 :)

    bugzilla 上有一个relevant issue raised

    【讨论】:

      【解决方案2】:
      if ('ontouchstart' in window
          || navigator.maxTouchPoints > 0
          || navigator.msMaxTouchPoints > 0
      ) {
            /* Browser with either Touch Events of Pointer Events
                running on touch-capable device. */
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        • 2012-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-12
        • 2013-10-22
        相关资源
        最近更新 更多