UWP - Xbox One - JavaScript - 禁用 gamepadB 默认后退导航行为
Posted
技术标签:
【中文标题】UWP - Xbox One - JavaScript - 禁用 gamepadB 默认后退导航行为【英文标题】:UWP - Xbox One - JavaScript - disable gamepadB default back navigation behaviour 【发布时间】: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
【问题讨论】:
【参考方案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);
);
【讨论】:
以上是关于UWP - Xbox One - JavaScript - 禁用 gamepadB 默认后退导航行为的主要内容,如果未能解决你的问题,请参考以下文章
UWP - Xbox One - JavaScript - 禁用 gamepadB 默认后退导航行为