如何检查完全支持deviceorientation事件的设备/浏览器?

时间:2013-09-19 10:55:03

标签: javascript html5 mobile magnetometer

我有一个非常好的HTML5指南针。现在,我需要一种智能方法来区分“支持伪设备方向”的浏览器(如桌面铬和FF)以及使用该设备磁力计的iPhone / Android / iPad浏览器等真正的候选者。

我目前的解决方案是对DeviceOrientationEvent和触摸支持的基本检查:

if (window.DeviceOrientationEvent && 'ontouchstart' in window) {
  // setup real compass thing, with event.alpha
} else {
  // setup some mouse following hack
}

这够了吗?我不太确定“有触摸支持但没有磁力计”的设备,例如mac book上的chrome有触摸支持,还有伪设备方向?

1 个答案:

答案 0 :(得分:2)

它似乎按原样工作,我错了,mac书上的chrome不会进入“真正的指南针”部分。应该测试一下,也许吧。

if (window.DeviceOrientationEvent && 'ontouchstart' in window) {
    // setup real compass thing, with event.alpha
    document.body.innerHTML = "haz!";
} else {
    // setup some mouse following hack
    document.body.innerHTML = "nope";
}

检查一下自己:http://jsfiddle.net/benzkji/J58ef/

如果启用了启用了设备定位功能的启用触控的windos笔记本电脑,则会发生这种情况。可能会检查deviceorientation事件的“绝对”属性:https://developer.mozilla.org/de/docs/WebAPI/Detecting_device_orientation