Document: hasStorageAccess() method
{{APIRef("Storage Access API")}}
The hasStorageAccess() method of the {{domxref("Document")}} interface returns a {{jsxref("Promise")}} that resolves with a boolean value indicating whether the document has access to third-party, unpartitioned cookies.
This method is part of the Storage Access API.
[!NOTE] This method is another name for {{DOMxRef("Document.hasUnpartitionedCookieAccess()")}}. There are no current plans to remove this method in favor of {{DOMxRef("Document.hasUnpartitionedCookieAccess()")}}.
Syntax
hasStorageAccess()
Parameters
None.
Return value
A {{jsxref("Promise")}} that resolves with a boolean value indicating whether the document has access to third-party cookies — true if it does, and false if not.
The result returned by this method can be inaccurate in a couple of circumstances:
- The user may have active browser settings that block third-party cookies; in this case,
truemay be returned even though third-party cookies are still inaccessible. To handle such a situation, you should gracefully handle any errors resulting in cookie values being unretrievable; for example, inform the user that access to their personalized settings is blocked and invite them to sign in again to use them. - The browser might not block third-party cookie access by default; in this case,
falsemay be returned even though third-party cookies are accessible, and storage access wouldn't need to be requested (i.e., via {{domxref("Document.requestStorageAccess()")}}). To get around this issue, you could query {{domxref("Document.cookie")}} to find out whether your cookies are accessible, and call {{domxref("Document.requestStorageAccess()")}} if they are not.
[!NOTE] If the promise gets resolved and a user gesture event was being processed when the function was originally called, the resolve handler will run as if a user gesture was being processed, so it will be able to call APIs that require user activation.
Exceptions
InvalidStateError{{domxref("DOMException")}}- : Thrown if the current {{domxref("Document")}} is not yet active.
Examples
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");
}
});
[!NOTE] See Using the Storage Access API for a more complete example.
Specifications
{{Specifications}}
Browser compatibility
{{Compat}}
See also
- {{domxref("Document.hasUnpartitionedCookieAccess()")}}, {{domxref("Document.requestStorageAccess()")}}, {{domxref("Document.requestStorageAccessFor()")}}
- Using the Storage Access API
- Introducing Storage Access API (WebKit blog)
谢谢你的反馈!