UWP - Xbox One - JavaScript - отключить поведение обратной навигации по умолчанию для геймпадаB - PullRequest
2 голосов
/ 26 мая 2020

У меня есть чистое связанное с JavaScript / React веб-приложение pwa / размещенное на Xbox One. В приложении есть собственная настраиваемая навигация. Я хочу отключить поведение gamepadB по умолчанию history.goBack ().

Согласно

контроллер xbox one предотвращает поведение кнопки возврата по умолчанию с помощью Javascript

что-то вроде этого должно работать, но это не так:

navigator.gamepadInputEmulation = "keyboard";
if (typeof Windows !== "undefined") {
  const systemNavManager = Windows.UI.Core.SystemNavigationManager.getForCurrentView();

  if (systemNavManager) {
    systemNavManager.addEventListener(
      'backrequested',
      event => {
        event.handled = true;
      },
      false
    );
  }
}

настройка event.handled в фазе захвата / пузыря ничего не делает. Для event.handled уже установлено значение true до вызова этого обработчика. Использование:

event.preventDefault()

будет сканировать sh приложение, поскольку стандартные функции dom, такие как preventDefault, stopPropagation и stopImmediatePropagation, не поддерживаются.

BackRequestedEventArgs Class | Windows Центр разработки

1 Ответ

1 голос
/ 27 мая 2020

разобрался, просто добавив e.preventDefault () в событие нажатия клавиши, где keyCode - gamepadB, остановит обратную навигацию системы по умолчанию

navigator.gamepadInputEmulation = "keyboard";

document.addEventListener('keydown', e => {
            if (e.keyCode === 196 // 196 is the keycode for B button on gamepad) {

                e.preventDefault();
                this.handleBack(e);
            }
        });
...