Keyboard:lock() 方法
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Keyboard
接口的 lock()
方法返回一个 Promise
,该方法在启用对物理键盘上任何或所有按键的按键捕获后兑现。此方法只能捕获底层操作系统授予访问权限的按键。
如果多次调用 lock()
,则只有最近一次调用中指定的按键代码才会被锁定。之前调用 lock()
锁定的任何按键都会被解锁。
语法
js
lock()
lock(keyCodes)
参数
keyCodes
可选-
一个或多个要锁定的按键代码的
Array
。如果未提供按键代码,则所有按键都将被锁定。有效代码值列表可在 UI 事件 KeyboardEvent 代码值规范中找到。
返回值
异常
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