有谁注意到,在最新版本的桌面版 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/