【问题标题】:UWP - Xbox One - JavaScript - disable gamepadB default back navigation behaviourUWP - Xbox One - JavaScript - 禁用 gamepadB 默认后退导航行为
【发布时间】:2020-09-12 16:19:16
【问题描述】:

我有一个在 Xbox One 上运行的纯 JavaScript/React 捆绑 pwa/托管网络应用程序。 该应用程序有自己的自定义导航。 我想禁用 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
    );
  }
}

在捕获/冒泡阶段设置 event.handled 没有任何作用。在调用此处理程序之前, event.handled 已设置为 true。 使用:

event.preventDefault()

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

BackRequestedEventArgs Class | Windows Dev Center

【问题讨论】:

    标签: javascript uwp xbox


    【解决方案1】:

    想通了,只需在 keyCode 为 gamepadB 的 keydown 事件上添加 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);
                }
            });
    

    【讨论】:

      猜你喜欢
      • 2019-11-20
      • 2017-05-19
      • 2016-12-11
      • 2018-01-26
      • 2016-07-30
      • 2020-07-02
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      相关资源
      最近更新 更多