javascript - 如何让 DeviceOrientationEvent 和 DeviceMotionEvent 在 Safari 上工作?

标签 javascript safari mobile-safari device-orientation devicemotion

我正在尝试在我的网站上实现 DeviceOrientationEvent 和 DeviceMotionEvent 以获得 3D 效果。但是,控制台不会记录任何信息,显然 iOS 13 需要用户设置权限才能开始执行此操作。我似乎无法弄清楚如何正确设置它。

我做了一些研究,这是我发现的:https://github.com/w3c/deviceorientation/issues/57#issuecomment-498417027

遗憾的是,在线提供的所有其他方法都无法再使用。

window.addEventListener('deviceorientation', function(event) {
    console.log(event.alpha + ' : ' + event.beta + ' : ' + event.gamma);
});

我收到以下错误消息:

[警告] 在请求并授予权限之前,不会触发任何设备运动或方向事件。

最佳答案

从 iOS 13 beta 2 开始,您需要调用 DeviceOrientationEvent.requestPermission() 才能访问陀螺仪或加速度计。这将显示一个权限对话框,提示用户允许对该站点的运动和方向访问。

请注意,如果您尝试在页面加载时自动调用它,这将不起作用。用户需要执行一些操作(如点击按钮)才能显示对话框。

此外,当前的实现似乎要求站点启用 https。

有关详细信息,请参阅 this page

关于javascript - 如何让 DeviceOrientationEvent 和 DeviceMotionEvent 在 Safari 上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56514116/

相关文章:

javascript - 如何创建只需要 html 中的 anchor 的查看更多/阅读更多功能?

javascript - Safari 浏览器只抛出这个 Jquery 错误 div[id^ ='divSelectAll' ] input[id^ ='chk_' ")

javascript - Safari 表单验证仅在第二次单击按钮时有效,但在 IE 第一次单击时工作正常

javascript - knockout 点击绑定(bind)在 iPad 中不起作用

javascript - Heatmap.js 未渲染

javascript - 将jasmine测试结果输出到控制台

Javascript新日期函数为两个相似的函数调用生成不同的小时值

html - Safari 溢出/可见性和溢出/显示错误(元素仍然可见)

iPhone 媒体查询不重定向到移动样式表

javascript - iPhone 网络中的 .focus() 问题