桌面通知在 Safari 上为啥不弹出?
我在项目里用 Notification API 做了个桌面提醒功能,Chrome 和 Firefox 都正常,但 Safari 完全没反应,也没报错。
已经检查过用户授权了,Notification.permission 返回的是 ‘granted’,代码也执行到了 new Notification('标题', { body: '内容' }) 这一行,就是不显示通知。
是不是 Safari 有啥特殊限制?比如必须用 HTTPS 或者不能在 iframe 里调用?我本地开发是 http://localhost,会不会是这个原因?
但有几个关键点你得检查一下。推荐的做法是确保你的页面是从用户交互触发的通知请求。Safari 比较严格,如果是在页面加载时直接调用 Notification.requestPermission(),很可能不会生效。
另外,虽然你说已经获取了权限,但最好还是加上一个检查逻辑:
还有个容易被忽略的点是,Safari 要求网站必须在用户的“允许通知”列表里。你可以让用户进入系统偏好设置 -> 通知,然后找到你的网站添加进去。
最后提醒下,Safari 的通知样式可能会跟 Chrome/Firefox 不太一样,这是正常现象,符合各浏览器实现标准。