【问题标题】:Deviceorientaion event isn't working on Chrome on AndroidDeviceorientaion 事件在 Android 上的 Chrome 上不起作用
【发布时间】:2020-07-02 13:46:35
【问题描述】:

所以基本上,当页面在 Android Chrome 上运行时,deviceorientation 事件似乎不起作用。永远不会调用事件处理函数。

现在奇怪的是,当相同的代码在计算机上的 Chrome 浏览器上运行时,设备方向是通过 Chrome 开发工具虚拟模拟的(开发工具/更多工具/传感器/方向 ),一切正常。

起初我想,也许我的手机没有陀螺仪或不支持deviceorientation,但我可以用它在 YouTube 上观看 360° 视频。我已经为deviceorientation 尝试了许多演示,并且所有这些演示都有效(例如包括this one (threejs.org)this other one)。

现在,所有这些演示在使用开发工具进行模拟和在我的 Android 手机上运行时都可以正常工作,但有一个例外。 deviceorientationdeveloper.mozilla.org 文档/演示仅在通过开发工具模拟时有效,而不是在我的手机上 - 正是我的代码发生的情况......

我不明白deviceorientation 在某些情况下在 Chrome Android 上是如何工作的,但在其他一些情况下——包括我的代码和 Mozilla 的代码——却不...

任何帮助或任何评论都会有很大帮助!

PS:如果有什么要说的,这里是我用来检测设备方向的代码。它基本上是 Mozilla 网站的复制粘贴:

window.addEventListener("deviceorientation", function (event) {
    var absolute = event.absolute;
    var alpha = event.alpha;
    var beta = event.beta;
    var gamma = event.gamma;
                
    console.log(alpha);
}, true);

【问题讨论】:

    标签: javascript android google-chrome dom-events device-orientation


    【解决方案1】:

    好吧,这真的很愚蠢!如果有人碰巧像我一样遇到这个问题,这是我发现的,以及我是如何解决的:

    这可能是一个错误,也可能是一个功能,但是当从本地文件加载时,deviceorientation 在 Android Google Chrome 上似乎不起作用?打开时,Chrome 不会打开文件本身 - 如果您在打开时查看 URL,它不是 C://Android/ETC/file.html 或类似计算机上的您可能希望它是,但 content://media/external/file/435765 或类似的东西。我不知道为什么要这样做,但我想肯定是有原因的。

    嗯,我认为这就是导致问题的原因,因此,按照这个逻辑,将代码放在 Web 服务器上可能会解决问题。

    幸运的是,就我而言,我的deviceorientation 问题只是已经需要 Web 部署的事情的一部分。因此,我刚刚将我的代码部署到了全球网络,令我惊讶的是,我的代码现在可以工作了!

    在本地运行时它不起作用的事实是愚蠢的!如您所见,在developer.mozilla.org 的这张表上,deviceorientation 应该与 Android 上的 Chrome 兼容,只是由于某种原因在本地运行时不兼容:

    【讨论】:

    • 我已部署到 EC2 并使用 HTTPS 提供服务,但仍然无法正常工作。
    猜你喜欢
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多