Keyboard:lock() 方法

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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

安全上下文: 此项功能仅在一些支持的浏览器安全上下文(HTTPS)中可用。

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

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

语法

js
lock()
lock(keyCodes)

参数

keyCodes 可选

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

返回值

一个 Promise,当锁定成功时兑现 undefined

异常

AbortError DOMException

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

InvalidAccessError DOMException

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

InvalidStateError DOMException

如果未在活跃的顶级浏览上下文中调用 lock(),则抛出此异常。

安全性

需要瞬态用户激活。用户必须与页面或 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"]);

规范

Specification
Keyboard Lock
# h-keyboard-lock

浏览器兼容性

BCD tables only load in the browser