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

瀏覽器相容性