Firefox 56+ 打破了跨多个窗口/标签的 Gamepad API
我正在开发的应用程序使用 Gamepad API 来允许使用 xbox 控制器来控制视频制作相机。它支持多个窗口/选项卡。
一切都很好,但是从 Firefox 版本 52 升级到 65 后,当打开多个页面时,控制器停止正常工作。更新对于视频稳定性是必要的,因此降级不是一种选择。
如果 Mozilla 修复了问题,最坏的情况将使用固定的 Vesrion 进行更新。
如何重现:
运行windows打开Firefox 56+版本
- 打开https://html5gamepad.com/
- 连接 Xbox 控制器(可能是任何游戏手柄)
观察控制器是否被检测到,并且游戏手柄上的输入显示在测试仪中。
- 打开第二个窗口并导航到https://html5gamepad.com/
观察 at 未检测到控制器 预期:应检测到控制器,并且应在测试仪中显示 inout。
如果您降级到 56 以下或禁用多进程,browser.tabs.remote.autostart
则不会出现此问题。
我所知道/尝试过的:
- 已将问题范围缩小到 Firefox 版本 56.0.0
- 可以与https://html5gamepad.com/一致地重现该问题
- 无法使用 Chrome 或 Firefox 52 重现
- 关闭
browser.tabs.remote.autostart
确实可以解决问题,但同样,这是视频稳定性和整体性能所必需的。 navigator.getGamepads
在第二个窗口中似乎返回一个空列表- 跟踪 ff 问题 https://bugzilla.mozilla.org/show_bug.cgi?id=1538805
- 和 ff 问题https://bugzilla.mozilla.org/show_bug.cgi?id=1529850
- 问题是每个网站一个
在此之前被标记为重复。我知道这是一个类似于Is there a way to use the HTML5 Gamepad API with multiple windows or tabs in Firefox? 但在这个问题上没有任何动静,而且非常具体。
TLDR:启用多处理的 FF v56+ 在多个窗口中使用时会破坏 Gamepad API。任何解决方法或修复?