Keyboard: lock() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

Keyboard 接口的 lock() 方法返回一个 Promise,该 Promise 在启用对物理键盘上任意或所有按键的按键捕获后解析。此方法只能捕获底层操作系统授予访问权限的按键。

如果多次调用 lock(),则只有最近一次调用中指定的按键代码将被锁定。先前调用 lock() 所锁定的任何按键都将被解锁。

语法

js
lock()
lock(keyCodes)

参数

keyCodes 可选

一个包含一个或多个要锁定的按键代码的 Array。如果未提供按键代码,则所有按键都将被锁定。有效的代码值列表可以在 UI Events KeyboardEvent code Values 规范中找到。

返回值

一个 Promise,当锁定成功时,该 Promise 会以 undefined 解析。

异常

AbortError DOMException

如果在当前调用完成之前进行了新的 lock() 调用,则会抛出此异常。

InvalidAccessError DOMException

如果 keyCodes 中的任何按键不是有效的 按键代码属性值,则会抛出此异常。

InvalidStateError DOMException

如果 lock() 不是在活动的顶级浏览上下文(top-level browsing context)中调用的,则会抛出此异常。

安全

需要瞬时用户激活。用户必须与页面或 UI 元素进行交互才能使此功能正常工作。

示例

捕获所有按键

以下示例捕获所有按键。

js
navigator.keyboard.lock();

捕获特定按键

以下示例捕获“W”、“A”、“S”和“D”这几个按键。它会捕获这些按键,而不管按键时使用了什么修饰符。假设标准的美式 QWERTY 键盘布局,注册 "KeyW" 可确保“W”、Shift+“W”、Control+“W”、Control+Shift+“W”以及与“W”相关的其他所有按键修饰符组合都会发送到应用程序。这同样适用于 "KeyA""KeyS""KeyD"

js
navigator.keyboard.lock(["KeyW", "KeyA", "KeyS", "KeyD"]);

规范

规范
键盘锁定
# h-keyboard-lock

浏览器兼容性