浏览器通知权限请求后如何自定义提示样式?
在开发网页通知功能时,用户授权后想用自定义样式覆盖浏览器默认的提示框,但发现CSS样式完全不起作用。尝试给notification对象添加类名也不行:
Notification.requestPermission().then(() => {
const notification = new Notification('标题', {
body: '内容',
className: 'custom-notification' // 这个类名没生效
})
})
查文档说浏览器原生通知样式无法直接修改,那有没有办法在用户授权后,用自定义的DOM元素实现类似效果?试过用MutationObserver监听元素变化,但总比原生通知晚半秒显示
NotificationAPI。简单思路:用户授权后,拦截通知的触发,用一个固定定位的
div模拟通知框。可以写个函数,比如:然后配合 CSS 样式,想怎么设计都行。别忘了加动画效果,看起来更自然。
如果想兼容两种方式(原生 + 自定义),可以在检测到浏览器支持通知时,优先用原生;否则 fallback 到这个自定义方案。插件可以实现这种逻辑,但简单项目直接写代码就行。
MutationObserver 的确有点鸡肋,延迟问题很难解决,不如直接用 DOM 模拟来得痛快。