在 iFrame 中引用时,“deviceorientation”不会在 iOS 浏览器中触发

Aks*_*vig 3 html javascript iframe ios

我正在制作一个在 iframe 中运行“360 全景查看器”的网站,其中源页面使用 JavaScript 并window.DeviceOrientationEvent确定用户是否使用具有方向功能的移动设备。我在 iOS Safari 和 Chrome 上看到一些奇怪的行为:

window.DeviceOrientationEvent计算结果为 true,但deviceorientation事件永远不会被触发。

Android Chrome 的情况并非如此 - 在 iF​​rame 中使用时,该事件会按预期连续触发。

当直接访问页面(在 iOS 上)时,我看到事件触发。就好像在 iframe 中使用它会以某种方式“阻止”此事件。

这对我来说没有什么意义,研究它并没有透露多少信息,除了一些模糊的迹象[1, 2],它实际上可能与 CORS 有关 - 无论 iframe 源是否与父页面位于同一根域上。这对我来说更没有意义..

有人知道吗?

1 2

Hus*_*sky 6

对于现在遇到这个问题的人来说,苹果似乎deviceorientation从 iOS 12.2 开始就禁用了该 API。用户现在需要明确地将其切换到Settings > Safari > Motion and Orientation access. 请参阅此处进行讨论。