javascript - 设备运动事件未在从跨源 iframe chrome 62 打开的选项卡中触发

标签 javascript android iframe cross-domain devicemotion

自 Chrome 62(在 Android 上)以来,我遇到了无法在跨源 iframe 中访问 devicemotion 事件的问题。

为了解决这个问题,在不使用 postMessage 将 devicemotion 事件传递给 iframe 的情况下,我使用它自己的位置从 iframe 打开一个新选项卡。但是,新选项卡不会接收任何设备运动事件。将 url 复制粘贴到手动打开的选项卡中确实会导致触发 devicemotion 事件。

我假设新选项卡以某种方式被沙盒化,但我还没有找到任何方法来解决这个问题。如何打开没有此限制的新选项卡?如果那不可能,是否有任何其他方法可以绕过 iframe 的跨域限制?

我无权访问父页面。

最佳答案

我遇到了同样的问题,但通过监听 top.window 而不是 window 解决了这个问题。

top.window.addEventListener('devicemotion', myFunction, false);

希望这对您有所帮助。

关于javascript - 设备运动事件未在从跨源 iframe chrome 62 打开的选项卡中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47466138/

相关文章:

android - 如何为 NDK_MODULE_PATH 指定目录

google-chrome - 2020 年 8 月 10 日更新后,Chrome 不会在 iframe 中发回 cookie

css - 如何调整 iframe 的大小以保持比例?

javascript - 无法使用新数据对象更新 Knockout UI

javascript - 如何订购运行 ajax 的 jQuery 然后必须返回 true

javascript - Alfresco Action - 使用 Action 将文件转换为 PDF

android - 尝试解决 Gradle 中的相互依赖关系

android - gradle ndk generateJsonModelDebug 失败

javascript - 如何使用 soundmanager2 播放 wav 文件?

ios - 在 iframe 中打开选择框时,iPhone 中不显示“完成”按钮