文件:hasStorageAccess() 方法

Baseline 2023
新推出

自 ⁨2023 年 12 月⁩起,此功能可在最新的裝置和瀏覽器版本上使用。此功能可能無法在較舊的裝置或瀏覽器上使用。

hasStorageAccess() 方法屬於 Document 介面,它返回一個 Promise,該 Promise 解析為一個布林值,指示文件是否具有訪問 第三方未分割槽 Cookie 的許可權。

此方法是 Storage Access API 的一部分。

注意:此方法是 Document.hasUnpartitionedCookieAccess() 的另一個名稱。目前沒有計劃棄用此方法而只使用 Document.hasUnpartitionedCookieAccess()

語法

js
hasStorageAccess()

引數

無。

返回值

一個 Promise,它解析為一個布林值,指示文件是否具有訪問第三方 Cookie 的許可權——如果具有,則為 true,否則為 false

此方法返回的結果在某些情況下可能不準確。

  1. 使用者可能設定了阻止第三方 Cookie 的瀏覽器設定;在這種情況下,即使第三方 Cookie 仍然無法訪問,也可能返回 true。要處理這種情況,您應該優雅地處理任何導致 Cookie 值無法檢索的錯誤;例如,告知使用者對他們個性化設定的訪問已被阻止,並邀請他們再次登入以使用這些設定。
  2. 瀏覽器可能預設不阻止第三方 Cookie 訪問;在這種情況下,即使第三方 Cookie 可訪問,也可能返回 false,並且不需要請求儲存訪問(即透過 Document.requestStorageAccess())。要解決此問題,您可以查詢 Document.cookie 以確定您的 Cookie 是否可訪問,如果不可訪問,則呼叫 Document.requestStorageAccess()

注意:如果 Promise 已解析,並且在最初呼叫該函式時正在處理使用者手勢事件,則解析處理程式將像正在處理使用者手勢一樣執行,因此它能夠呼叫需要使用者啟用的 API。

異常

InvalidStateError DOMException

如果當前的 Document 尚未啟用,則丟擲此錯誤。

示例

js
document.hasStorageAccess().then((hasAccess) => {
  if (hasAccess) {
    // storage access has been granted already.
    console.log("cookie access granted");
  } else {
    // storage access hasn't been granted already;
    // you may want to call requestStorageAccess().
    console.log("cookie access denied");
  }
});

注意:有關更完整的示例,請參閱使用 Storage Access API

規範

規範
Storage Access API
# dom-document-hasstorageaccess

瀏覽器相容性

另見