首页 > 解决方案 > Gamepad API 未在 Windows server 2012 上的 Chrome 中检测到 Xbox 控制器

问题描述

我正在尝试使用游戏手柄 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。

标签: javascriptgoogle-chromewindows-server-2012gamepad-api

解决方案


在 Windows Server 2012、Windows 8 和更高版本上,Chrome 会查找 xinput1_4.dll。在早期版本中,它会查找 xinput9_1_0.dll。

在此处查看 XInputDllFileName:

https://cs.chromium.org/chromium/src/device/gamepad/gamepad_platform_data_fetcher_win.cc?l=74


推荐阅读