说我在一个域上拥有一个网站:a.example.com
我想检查当前的Web Client 是否已授予另一个域的通知权限,例如b.example.com
到目前为止,我一直使用Iframe
(跨域iframe)到b.example.com
上运行以下permissions query的特定页面来进行此操作:
return navigator.permissions.query({ name: 'notifications' })
.then((result) => {
return result.state;
});
直到现在,以上代码在Iframe
中都可以正常工作,而且我不确定result.state
为何总是返回"prompt"
,即使 Client 已授予权限。
但是,如果呼叫Notification.permission
,则会显示"granted"
。
值得一提的是,如果我在navigator.permissions.query({name:'notifications'})
(在浏览器的控制台中没有iframe)上调用b.example.com
,则会返回"granted"
。
我在这里想念什么?
[该示例我一直在使用Chrome版本71.0.3578.98]
更新1
似乎navigator.permissions.query
从a.example.com
(顶级域)而不是b.example.com
返回值,但是Notification.permission
返回b.example.com
的值?>
这是api的新行为还是我缺少某些东西?