当前位置:  开发笔记 > 编程语言 > 正文

Chrome桌面通知示例

如何解决《Chrome桌面通知示例》经验,为你挑选了4个好方法。

如何使用Chrome桌面通知?我想在我自己的代码中使用它.

更新:这是一篇博客文章,通过示例解释webkit通知.



1> Dan Dascales..:

以下是适用于Chrome,Firefox,Opera和Safari的桌面通知的工作示例.请注意,出于安全原因,从Chrome 62开始,可能无法再从跨域iframe请求Notification API的权限,因此您需要将此示例保存在网站/应用程序的HTML文件中,并确保使用HTTPS.

// request permission on page load
document.addEventListener('DOMContentLoaded', function() {
 if (!Notification) {
  alert('Desktop notifications not available in your browser. Try Chromium.');
  return;
 }

 if (Notification.permission !== 'granted')
  Notification.requestPermission();
});


function notifyMe() {
 if (Notification.permission !== 'granted')
  Notification.requestPermission();
 else {
  var notification = new Notification('Notification title', {
   icon: 'http://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png',
   body: 'Hey there! You\'ve been notified!',
  });
  notification.onclick = function() {
   window.open('http://stackoverflow.com/a/13328397/1269037');
  };
 }
}
 

我们正在使用MDN上记录的W3C Notifications API .不要将此与Chrome扩展程序通知API混淆,后者不同.Chrome扩展程序通知显然只适用于Chrome扩展程序,不需要用户的任何特殊权限,支持富文本通知,但会自动消失,用户可能不会注意到它们已被触发).W3C通知适用于许多浏览器(请参阅caniuse支持),需要用户权限,在之前的通知之上堆栈,并且不会在Chrome中自动消失(他们在Firefox中执行).

最后的话

通知支持一直在不断变化,过去三年中各种API都被弃用.如果您感到好奇,请查看此答案的先前修改,以查看以前在Chrome中工作的内容,并了解丰富的HTML通知的故事.

现在最新的标准是https://notifications.spec.whatwg.org/.

还有一个不同的调用(尽管具有相同的参数)来从服务工作者创建通知,由于某种原因,这些通知无法访问localhost://构造函数.

另请参阅notify.js以获取帮助程序库.


@mghaoui - 流行!=真(必要).我已将此标记为正确答案.
感谢您的支持,使用Pusher帮助我构建通知系统.
在Windows 8上使用Mozilla Fire fox时无法使用*Chrome版本47.0.2526.80 dev-m*
window.webkitNotifications.checkPermission()将在非Chrome浏览器中引发异常
关闭不是一种方法.我想你想要notification.cancel()> http://decadecity.net/blog/2012/10/12/webkit-notification-api >>它似乎也自己关闭了.
嗨,谢谢你的回答!但是除了使用file://协议的Chrome之外,几乎可以在任何地方使用.如果我在Chrome中打开你的JSBin示例就行了.如果我将您的代码放在我的本地页面(文件:///)中,它仍然在FF中运行,但它不在Chrome中.任何的想法?

2> GmonC..:

检查设计和API规范(它仍然是草稿)或检查来源(页面不再可用)的简单示例:它主要是调用window.webkitNotifications.createNotification.

如果您想要一个更强大的示例(您尝试创建自己的Google Chrome扩展程序,并且想知道如何处理权限,本地存储等),请查看Gmail通知程序扩展:下载crx文件而不是安装它,解压缩并阅读其源代码.


4年后,这个答案现在已经完全过时了.@RoyiNamir:有Notifications API.检查[我的回答](http://stackoverflow.com/a/13328513/1269037).

3> mpen..:

它似乎window.webkitNotifications已被弃用和删除.但是,有一个新的API,它似乎也适用于最新版本的Firefox.

function notifyMe() {
  // Let's check if the browser supports notifications
  if (!("Notification" in window)) {
    alert("This browser does not support desktop notification");
  }

  // Let's check if the user is okay to get some notification
  else if (Notification.permission === "granted") {
    // If it's okay let's create a notification
    var notification = new Notification("Hi there!");
  }

  // Otherwise, we need to ask the user for permission
  // Note, Chrome does not implement the permission static property
  // So we have to check for NOT 'denied' instead of 'default'
  else if (Notification.permission !== 'denied') {
    Notification.requestPermission(function (permission) {

      // Whatever the user answers, we make sure we store the information
      if(!('permission' in Notification)) {
        Notification.permission = permission;
      }

      // If the user is okay, let's create a notification
      if (permission === "granted") {
        var notification = new Notification("Hi there!");
      }
    });
  } else {
    alert(`Permission is ${Notification.permission}`);
  }
}

codepen



4> Rudie..:

我喜欢:http://www.html5rocks.com/en/tutorials/notifications/quick/#toc-examples但它使用的是旧变量,所以演示不再适用了.webkitNotifications现在Notification.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有