html5系列:notification api晋级——从webkitNotifications到Notification

近来又鼓捣起两年前做的一个chrome扩大,想要跑起来却发明报错了,看了下console,首先是indexedDB报错,说是window.webkitIndexedDB已被烧毁了,用window.indexedDB替代后,就没再报错了,看来我这chrome 46indexedDB api只是改了个更通用的称号,照样比较老实的,所以,这里就不详述了。
真正出问题的是桌面关照,chrome 46给我报的错是window.webkitNotifications不是个对象,这可坑爹了都没提示我要换成什么。立时百度谷歌一同上,排名前线的大部分都是我昔时就看到的老材料,十分困难找到最新的材料,测试可用,下面引见一下新版的window.Notifications与老版的window.webkitNotifications有什么区别。

chrome 22最先,webkitNotifications就被取消了,只能运用标准化的Notification

猎取权限

无论是新版照样老版的notification api,都是须要取得用户的同意,才猎取到响应的api权限。
老版猎取权限的体式格局是如许的:

  1. 经由过程checkPermission()要领搜检当前是不是已取得权限。

  2. 若还没有取得权限,则挪用requestPermission()要领向用户要求权限。

而新版取消了checkPermission()要领,直接经由过程requestPermission()要领完成查询权限及猎取权限这两项使命,详细代码以下:

Notification.requestPermission(function(status){  //status值有三种:default/granted/denied
  if(Notification.permission !== status){
    Notification.permission = status;
  }
});

建立音讯

重点来了,老版是如许的:

  1. 应用window.webkitNotifications.createNotification()或window.webkitNotifications.createHTMLNotification()要领来建立一个Notification对象。

  2. 挪用方才建立的Notification对象的show()要领来举行显现。

新版则又精简了一点,直接new一个Notification对象,在new的时刻把桌面关照的参数都传进去,这桌面关照就会立时显现,详细代码看下方:

var options={
            dir: "ltr",  //掌握方向,听说现在浏览器还不支撑
            lang: "utf-8",
            icon: "http://ihuster.com/static/avatar/m_default.png",
            body: "你好呀,迎接留言交换呀"
        };
var n = new Notification("hello word!", options); 

别的新版另有一点差别的是,供应了4个事宜:

  • onshow()

  • onclick()

  • onclose()

  • onerror()

参考文章:

    原文作者:array_huang
    原文地址: https://segmentfault.com/a/1190000004085128
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞