Navigator.getGamepads Polyfill

Navigator.getGamepads Polyfill for gamepad-tester.com

// ==UserScript==
// @name         Navigator.getGamepads Polyfill
// @namespace    https://greasyfork.org/zh-CN/users/193133-pana
// @version      1.0.0
// @description  Navigator.getGamepads Polyfill for gamepad-tester.com
// @author       pana
// @match        *://gamepad-tester.com/*
// @icon         https://icons.duckduckgo.com/ip2/gamepad-tester.com.ico
// @run-at       document-start
// @compatible   chrome version < 99
// @license      GNU General Public License v3.0 or later
// @grant        none
// ==/UserScript==

(function () {
  'use strict';

  const oriGamepads = navigator.getGamepads.bind(navigator);
  navigator.getGamepads = () => {
    const gameTemp = oriGamepads.call() || {};
    let res = [];
    if (Array.isArray(gameTemp)) {
      res = gameTemp;
    } else {
      res = Array.from(gameTemp);
    }
    return res;
  };
})();