【问题标题】:Google Chrome v74's Device Events returning undefinedGoogle Chrome v74 的设备事件返回未定义
【发布时间】:2019-04-30 07:58:36
【问题描述】:

我正在尝试使用设备事件,例如 DeviceMotionEvent 和 DeviceOrientationEvent,但是当我尝试调试为什么它不能在我更新的 chrome 74 设备上工作时,结果发现上述事件没有被读取并且输出未定义而不是一个函数。


window.addEventListener('devicemotion', function (evt) {
   console.log(evt);
});
window.addEventListener('deviceorientation', function (evt) {
   console.log(evt);
});

【问题讨论】:

    标签: javascript google-chrome mobile


    【解决方案1】:

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

    可能与this issue有关隐私问题和this upcoming API有关。

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

    我在 changes list 或任何官方官方变更日志中的任何地方都找不到它。

    This blog post 似乎表明使用 localhost 访问该站点也可以工作(用于 http 访问的白名单域) - 但是,如果您使用实际设备进行测试,则不太可能在设备上运行您的服务器本身,因此您必须以某种方式将您的 localhost 请求路由到您的服务器 ip(据我所知,这只有在您的手机已植根时才能完成)。

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

    【讨论】:

    • 我在我们的 HTTPS 暂存站点中尝试了您的解决方案,并且成功了!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2022-06-29
    • 2022-07-16
    • 2021-05-22
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多