UWP - Xbox One - JavaScript - 禁用 gamepadB 默认后退导航行为

UWP - Xbox One - JavaScript - disable gamepadB default back navigation behaviour

我在 Xbox One 上有一个纯粹的 JavaScript/React 捆绑 pwa/hosted 网络应用程序 运行。 该应用程序有自己的自定义导航。 我想禁用 gamepadB 默认 history.goBack() 行为。

根据

xbox one controller prevent default back button behavior with 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
    );
  }
}

在 capture/bubble 阶段设置 event.handled 什么都不做。 event.handled 在调用此处理程序之前已设置为 true。 使用:

event.preventDefault()

作为标准 dom 功能会使应用程序崩溃,例如 不支持 preventDefault、stopPropagation 和 stopImmediatePropagation。

BackRequestedEventArgs Class | Windows Dev Center

明白了,只需在 keyCode 为 gamepadB 的按键事件上添加 e.preventDefault() 即可停止默认系统后退导航

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);
            }
        });