【发布时间】:2019-09-03 21:13:26
【问题描述】:
我正在尝试使用游戏手柄 API 连接到谷歌浏览器中的 Xbox 控制器。我遇到了一个问题,在插入控制器并按下控制器上的某些按钮后,navigator.GetGamepads() 未返回其数组中的任何游戏手柄对象,所有值均为空。
这仅发生在 Windows Server 2012 上的 Chrome 上。我已经尝试过 Firefox,并且可以正常检测到游戏手柄。在 Windows 8.1、Server 2016 和 Windows 10 chrome 上运行正常检测游戏手柄。
我尝试将 Xbox 驱动程序从我的 Windows 8.1 计算机复制到服务器 2012,但 navigator.GetGamepads() 仍然没有返回任何内容。我将 Windows 8.1 Xbox 驱动程序降级为在 Server 2012 上运行的相同驱动程序版本,但在 Windows 8.1 上一切正常。
查看 chrome://device-log/ 时,我可以看到 360 控制器在插入和拔出时显示为设备,因此 chrome 可以看到它,但由于某种原因似乎没有将其解析为游戏手柄。
关于什么可能导致 navigator.GetGamepads() 仅在 Windows Server 2012 上运行的 chrome 上失败的任何想法?我一直在使用 Chrome 76。
【问题讨论】:
-
XInput 的安装版本是多少?在 Windows Server 2012 和 Windows 8 上,Chrome 会查找 xinput1_4.dll。
-
@nondebug 将 xinput1_4.dll 从 windows 8.1 复制到 windows server 2012 system32 文件夹解决了我们的问题。 navigator.GetGamepads() 现在可以在 xbox 控制器上使用。 Server 2012 默认只有 xinput1_3.dll。谢谢您的帮助!如果您想将您的评论复制到答案,我可以将其标记为解决方案。再次感谢。
-
很高兴你成功了!
标签: javascript google-chrome windows-server-2012 gamepad-api