NotificationNotificationPractice安全上下文:此功能仅在安全上下文(HTTPS)下可用,部分支持的浏览器。NotificationsAPI的通知接口用于配置和向用户显示桌面通知。在线示例见文末代码。构造方法letnotification=newNotification(title,options)参数title定义通知的标题。当它被触发时,它会显示在通知窗口的顶部。options一个可选的选项对象,包含要应用于通知的任何自定义设置选项。选项是:dir:显示通知的方向。默认是auto,它遵循浏览器语言设置行为,你也可以通过设置ltr和rtl值来覆盖这个行为(虽然大多数浏览器似乎忽略了这些设置)lang:通知的语言,如果用来表示一个BCP47语言标记指定的DOMString。请参阅SitepointISO2字母语言代码页面以方便参考。badge:当没有足够的空间来显示通知本身时,包含用于表示通知的图像URL的USVString。body:表示通知文本的DOMString,将显示在标题下方。tag:一个DOMString表示通知的标识标签。icon:一个USVString,包含要在通知中显示的图标的URL。image:一个USVString,包含要在通知中显示的图像的URL。数据:您希望与通知关联的任意数据。这可以是任何数据类型。vibrate:振动模式当通知触发时,设备的振动硬件会发出。renotify:一个布尔值(en-US),指定在新通知替换旧通知后是否应通知用户。默认为false,这意味着他们不会收到通知。requireInteraction:指示通知应保持活动状态,直到用户单击或关闭它,而不是自动关闭。默认值为假。最新规范中列出了以下选项,但在任何浏览器中均不受支持。silent:一个布尔值(en-US),指示通知是否应静音,即无论设备设置如何,都不需要发出声音或振动.默认为false,表示不会静默。sound:一个USVString,包含通知触发时要播放的音频文件的URL。noscreen:一个布尔值(en-US),指定通知触发器是否应启用设备的屏幕。默认为false,这意味着它将启用屏幕。sticky:一个布尔值(en-US),表示通知是否应该是“粘性的”,即不容易被用户清除。默认为false,这意味着它不会粘住。判断浏览器是否支持当前源通知权限requestPermission()方法可以做到这一点,返回值有granted(允许)、denied(拒绝)或default(默认)三种。注意:当用户拒绝通知时,需要在浏览器系统-隐私设置和安全-通知中重新打开,chrome重新打开参考Notification.requestPermission().then(function(result){if(result==='denied'){console.log('Userrejected');return;}if(result==='default'){console.log('Userisnotauthorized');return;}//同意通知});发送通知letnotification=null;consttitle="癌症-00";constoptions={dir:"auto",//textdirectionbody:"这是我的好姐姐,我可以给你介绍一下",//notificationbodyrequireInteraction:true,//不自动关闭通知图片:"https://gitee.com/Wzhichao/img/raw/master/uPic/IMG_xxxxx327356%20.png",图标:"https://gitee.com/Wzhichao/img/raw/master/uPic/QlkqKm47%20.jpg",//通知图标};通知=新通知(标题,选项);这样你就不会错过一些重要的信息窗口Google会显示图片imagedisplayFirefoxGoogleimageimage在mac上不会显示。关闭通知close()方法用于关闭之前显示的通知。此代码将在4秒后自动关闭通知letnotification=newNotification(title,options);setTimeout(notification.close.bind(notification),4000);clickonthenotification当用户点击通知时,你可以做一些自定义的事情。让通知=新通知(标题,选项);notification.onclick=()=>{警报(1);};示例代码在浏览器中打开一个新标签,打开控制台,粘贴以下代码体验notify()functionnotify(){if(!("Notification"inwindow)){alert("抱歉,此浏览器不支持桌面通知!”);}Notification.requestPermission().then(function(result){if(result==="denied"){console.log("Userdenied");return;}if(result==="default"){console.log("Usernotauthorized");return;}//同意通知sendMesg();});}functionsendMesg(){letnotification=null;consttitle="癌症-00";constoptions={dir:"auto",//textdirectionbody:"ThisismyGoodsister,Icanintroduceyou",//Notificationbodydata:{originUrl:`https://developer.mozilla.org/zh}-CN/docs/Web/API/notification`,},requireInteraction:true,//不自动关闭通知图片:"https://cdn.wangzc.wang/uPic/Xs7W4K-2022-06-13-112152.jpg",icon:"https://cdn.wangzc.wang/uPic/SZQpJu-2022-06-13-112235.jpg",//通知图标};通知=新通知(标题,选项);//setTimeout(notification.close.bind(notification),4000);notification.onclick=({currentTarget:{data}})=>{notification.close();窗口.焦点();window.location.href=data.originUrl;};}
