首页 > 解决方案 > 如何在 Javascript 中检测浏览器和设备对陀螺仪和加速度计的支持?

问题描述

我有一个使用 360 度全景照片制作 VR 体验的网站。

最近,Apple 将 iOS 更新至 12.2,并默认关闭 safari 对“运动和方向”传感器的访问。

所以我需要添加一段 javascript 来检测陀螺仪和加速度计是否可用,并提示用户启用访问(如果可用)。

我在 stackoverflow 上发现了两个较早的代码建议,旨在检测对这些传感器的支持,但是在我的带有 iOS 12.2 的 iPhone 6s 上进行测试时,两种解决方案都报告说不存在陀螺仪,但事实并非如此。是的,可以访问运动和方向。

这是以前解决方案中的一个示例......

var canHandleOrientation;
if (window.DeviceOrientationEvent) {
    window.addEventListener("deviceorientation", handleOrientation, false);
}

function handleOrientation(event){
  console.log("Orientation:" + event.alpha + ", " + event.beta + ", " + event.gamma);
  canHandleOrientation = event; // will be either null or with event data
}

if (!canHandleOrientation) {alert("There is no gyroscope")

在这个测试脚本中,如果没有来自陀螺仪的数据,应该会出现“没有陀螺仪”的警报。由于 iPhone 6s 有陀螺仪,我不希望看到该消息出现,但确实出现了。

标签: javascriptaccelerometergyroscope

解决方案


推荐阅读