javascript - 最新的桌面版 Firefox 被识别为触摸设备吗?

标签 javascript jquery firefox

有谁注意到,在最新版本的桌面版 Firefox 上,它被识别为触摸设备?

我正在使用下面的脚本:

function isTouch() {
  try{ document.createEvent("TouchEvent"); return true; }
  catch(e){ return false; 
}
}

if (isTouch()) {
  alert('I am touch device!')
}

直到最新版本的桌面 Firefox 之前,该脚本都给了我完美的结果。这是一个错误吗?我错过了什么吗?

感谢大家的宝贵时间!

编辑:误报人们。我不知道出了什么问题,我尝试重置首选项,禁用所有扩展,但没有运气。

我终于通过刷新 firefox 解决了这个问题(尽管丢失了所有扩展并且不得不重新安装)。

感谢大家的努力,对于给您带来的任何不便,我们深表歉意。

最佳答案

您只是检查是否可以创建特定类型的事件,而不是检查当前是否使用触摸设备。

这里有一个比较完整的isTouchDevice函数,是我前段时间基于Modernizr的核心写的。

/**
 * Detect if the current device is a touch device.
 * Inspired by Modernizr and hardcore streamlined.
 */
function isTouchDevice() {
    var bool;
    if( ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch ) {
        bool = true;
    }
    else {
        var fakeBody = document.createElement( 'fakebody' );
        fakeBody.innerHTML += '<style>@media (touch-enabled),(-webkit-touch-enabled),(-moz-touch-enabled),(-o-touch-enabled){#touchtest{top:42px;position:absolute}}</style>';
        document.documentElement.appendChild( fakeBody );

        var touchTestNode = document.createElement( 'div' );
        touchTestNode.id = 'touchtest';
        fakeBody.appendChild( touchTestNode );
        bool = touchTestNode.offsetTop === 42;
    }
    return bool;
}

关于javascript - 最新的桌面版 Firefox 被识别为触摸设备吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30666932/

相关文章:

javascript - 如何使用数据表在单击按钮时显示带有列数据的确认模态

javascript - CSS 样式问题 - 未在 Firefox 中显示

javascript - 在 Firefox 中从 JavaScript 更改文本区域的拼写检查语言

javascript - 如何存储要传递给 .not() 的元素?

javascript - div 或 html 到图像(替代 html2canvas)

javascript - RequireJS 使用 AMD 模块随机加载错误的文件名

javascript - Ajax POST - 同步请求的 'XMLHttpRequest.withCredentials' 已弃用

javascript - 按字母顺序排列项目列表

javascript - 使用 Nodejs 自动从 API 获取数据

javascript - JSON.parse 问题