Document: hasStorageAccess() 方法
hasStorageAccess()
方法是 Document
接口的一部分,它返回一个 Promise
,该 Promise 解析为一个布尔值,指示文档是否可以访问 第三方、未分区 的 cookie。
此方法是 存储访问 API 的一部分。
注意:此方法是 Document.hasUnpartitionedCookieAccess()
的另一个名称。目前没有计划删除此方法而改用 Document.hasUnpartitionedCookieAccess()
.
语法
js
hasStorageAccess()
参数
无。
返回值
一个 Promise
,它解析为一个布尔值,指示文档是否可以访问第三方 cookie——如果可以访问,则为 true
,否则为 false
。
此方法返回的结果在以下几种情况下可能不准确。
- 用户可能启用了阻止第三方 cookie 的浏览器设置;在这种情况下,即使第三方 cookie 仍然无法访问,也可能会返回
true
。为了处理这种情况,您应该优雅地处理任何导致无法检索 cookie 值的错误;例如,通知用户其个性化设置的访问被阻止,并邀请他们再次登录以使用这些设置。 - 浏览器可能默认情况下不会阻止第三方 cookie 访问;在这种情况下,即使第三方 cookie 可以访问,并且不需要请求存储访问权限(例如,通过
Document.requestStorageAccess()
),也可能会返回false
。为了解决此问题,您可以查询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");
}
});
注意:有关更完整的示例,请参阅 使用存储访问 API。
规范
规范 |
---|
存储访问 API # dom-document-hasstorageaccess |
浏览器兼容性
BCD 表只在启用 JavaScript 的浏览器中加载。