首先要获取权限,如果返回 granted 为获取通知权限成功,如果为 denied 获取通知失败,注⚠️ :一旦拒绝,就无法通过编程方式挽回,因为不可能再触发授权提示。

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Document</title>
    7. </head>
    8. <body>
    9. </body>
    10. </html>
    11. <script>
    12. Notification.requestPermission().then((res) => {
    13. if (res === 'granted') {
    14. console.log('获取权限');
    15. let n = new Notification('系统消息', {
    16. body: 'body 内容',
    17. image: "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1200969649,1714025549&fm=26&gp=0.jpg",
    18. vibrate: true, // 震动
    19. })
    20. // 发送消息后的通知
    21. n.onshow = function () {
    22. console.log('通知显示');
    23. }
    24. // 通知被点击时触发
    25. n.onclick = function(){
    26. console.log('通知被点击');
    27. }
    28. // 通知消失或被取消
    29. n.onclose = function(){
    30. console.log('通知被关闭');
    31. }
    32. // 发送错误阻止通知显示时触发
    33. n.onerror = function(){
    34. console.log('发生错误');
    35. }
    36. } else if (res === 'denied') {
    37. console.log('没有权限');
    38. }
    39. })
    40. </script>