受使用者啟用限制的功能

為了確保應用程式無法濫用可能在使用者不希望時產生糟糕使用者體驗的 API,某些 API 只能在使用者處於“主動互動”狀態時使用,這意味著使用者當前正在與網頁進行互動,或者至少與頁面進行過一次互動。瀏覽器限制對彈出視窗、全屏或振動 API 等敏感 API 的訪問,僅限於使用者主動互動,以防止惡意指令碼濫用這些功能。本頁面列出了僅在使用者啟用後才可用的 Web 平臺功能。

使用者啟用意味著使用者正在與頁面進行互動,或者自頁面載入以來已完成一次互動。通常,這會是一個按鈕點選或其他 UI 互動。

更精確地說,觸發啟用的輸入事件 是一個事件,它

如果已觸發啟用,使用者代理會在兩種使用者啟用視窗狀態之間進行區分:粘滯(sticky)和瞬時(transient)。

瞬時啟用與粘滯啟用的比較

瞬時啟用與粘滯啟用的區別在於,瞬時啟用僅持續很短時間,在某些情況下使用受保護的功能時可能會被消耗(停用),而粘滯啟用會一直持續到會話結束。

基於瞬時啟用的功能限制可確保它們僅在使用者直接觸發時才可用。相比之下,粘滯啟用主要用於限制不應在頁面載入時自動觸發的功能,例如彈出視窗。

瞬時啟用

瞬時啟用 是一種視窗狀態,表明使用者最近按下了按鈕或執行了其他使用者互動。瞬時啟用會在超時後過期(如果未透過進一步的互動續訂),並且還可能被某些 API(例如 Window.open())消耗。

需要瞬時啟用的 API(列表不詳盡)

粘性啟用

粘滯啟用 是一種視窗狀態,表明使用者在會話中的某個時間點按下了按鈕、使用了選單或執行了其他使用者互動。與瞬時啟用不同,它在初始設定後不會重置。

需要粘滯啟用的 API(不詳盡)

UserActivation API

要以程式設計方式確定視窗是否具有粘滯或瞬時使用者啟用,UserActivation API 提供了兩個可以透過 navigator.userActivation 訪問的屬性。

另見