近来又鼓捣起两年前做的一个chrome扩大,想要跑起来却发明报错了,看了下console,首先是indexedDB报错,说是window.webkitIndexedDB
已被烧毁了,用window.indexedDB
替代后,就没再报错了,看来我这chrome 46
的indexedDB api
只是改了个更通用的称号,照样比较老实的,所以,这里就不详述了。
真正出问题的是桌面关照,chrome 46
给我报的错是window.webkitNotifications
不是个对象,这可坑爹了都没提示我要换成什么。立时百度谷歌一同上,排名前线的大部分都是我昔时就看到的老材料,十分困难找到最新的材料,测试可用,下面引见一下新版的window.Notifications
与老版的window.webkitNotifications
有什么区别。
从chrome 22
最先,webkitNotifications
就被取消了,只能运用标准化的Notification
。
猎取权限
无论是新版照样老版的notification api
,都是须要取得用户的同意,才猎取到响应的api权限。
老版猎取权限的体式格局是如许的:
经由过程checkPermission()要领搜检当前是不是已取得权限。
若还没有取得权限,则挪用requestPermission()要领向用户要求权限。
而新版取消了checkPermission()要领,直接经由过程requestPermission()要领完成查询权限及猎取权限这两项使命,详细代码以下:
Notification.requestPermission(function(status){ //status值有三种:default/granted/denied
if(Notification.permission !== status){
Notification.permission = status;
}
});
建立音讯
重点来了,老版是如许的:
应用window.webkitNotifications.createNotification()或window.webkitNotifications.createHTMLNotification()要领来建立一个Notification对象。
挪用方才建立的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()
参考文章: