Google Chrome v74的设备事件返回未定义

vir*_*orn 4 javascript mobile google-chrome

我正在尝试使用设备事件,例如DeviceMotionEvent和DeviceOrientationEvent,但是当我尝试调试为什么它无法在带有chrome 74的更新设备上运行时,结果是上面的事件没有被读取,并且输出未定义,而不是函数。


window.addEventListener('devicemotion', function (evt) {
   console.log(evt);
});
window.addEventListener('deviceorientation', function (evt) {
   console.log(evt);
});
Run Code Online (Sandbox Code Playgroud)

Bal*_*alo 7

使用HTTPS。我遇到了同样的问题,经过一些测试后发现它已从http中删除,但仍可用于通过https加载的网站。

有关隐私问题和即将发布的API的问题可能与有关。

iOS / Safari在上一次更新中做了同样的事情,并且另外添加了默认情况下关闭的设置。

我找不到更改列表或任何公共官方更改日志中提到的内容。

这篇博客文章似乎表明使用来访问网站localhost也可以(将白名单域用于http访问)-但是,如果使用实际设备进行测试,则不太可能在设备本身上运行服务器,因此您必须以某种方式将您的localhost请求路由到服务器ip(仅在您的手机植根于我所知的情况下才能完成)。

由于通用传感器API是一项强大的功能,因此Chrome仅允许在安全的上下文中使用它。实际上,这意味着要使用Generic Sensor API,您需要通过HTTPS访问您的页面。在开发过程中,您可以通过http:// localhost进行操作,但是对于生产环境,您需要在服务器上安装HTTPS。有关最佳做法和指南,请参阅“使用HTTPS进行安全性”文章。