我正在尝试获取Mozilla的通知。但它不断地抛出这个错误.
通知权限只能从一个简短的用户生成的事件处理程序中请求。
这是我的代码。同样的代码在Chrome、EDGE和Opera上也能正常工作。
Notification.requestPermission().then(function (status) {
if (status === 'denied') {
//
} else if (status === 'granted') {
//
}
});
我发现了一些与此相关的问题,但这些问题对我都没有帮助。
这个消息意味着你的订阅代码必须在用户生成的事件中调用,比如点击。
也许你是想在页面加载时订阅用户,但这在某些浏览器上是不可能的,比如Firefox和Safari,因为这被认为是对用户的一种骚扰。
这也是为什么许多推送服务(如OneSignal、Pushpad等)建议使用双重选择的原因之一:首先,你显示一个用HTML CSS设计的订阅提示或按钮,然后,在点击按钮后,你实际上是在请求权限(你上面的代码)。