文档:hasStorageAccess() 方法
hasStorageAccess() 方法属于 Document 接口,它返回一个 Promise,该 Promise 解析为一个布尔值,指示文档是否具有访问 第三方、未分区 Cookie 的权限。
此方法是 Storage Access API 的一部分。
注意:此方法是 Document.hasUnpartitionedCookieAccess() 的另一个名称。目前没有计划弃用此方法而只使用 Document.hasUnpartitionedCookieAccess()。
语法
js
hasStorageAccess()
参数
无。
返回值
一个 Promise,它解析为一个布尔值,指示文档是否具有访问第三方 Cookie 的权限——如果具有,则为 true,否则为 false。
此方法返回的结果在某些情况下可能不准确。
- 用户可能设置了阻止第三方 Cookie 的浏览器设置;在这种情况下,即使第三方 Cookie 仍然无法访问,也可能返回 true。要处理这种情况,您应该优雅地处理任何导致 Cookie 值无法检索的错误;例如,告知用户对他们个性化设置的访问已被阻止,并邀请他们再次登录以使用这些设置。
- 浏览器可能默认不阻止第三方 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 | 
浏览器兼容性
加载中…