我的代码适用于Firefox,Safari和MS Edge,但在Chrome中无效

时间:2017-11-30 02:38:40

标签: html google-chrome push-notification permissions notifications

我的代码适用于Firefox,Safari和MS Edge,但在Chrome中无效。 (我尝试在线访问我的网站。没有用。我的网站可能吗?)

HTML

<button onclick = "bildirim()" >Bildirim yolla</button>

JS

   function bildirim () {

   if (!("Notification" in window)) {
   alert("Your browser does not support Web Notifications API");
   } 

  else if (Notification.permission === "granted") {

  var notification = new Notification('Bildirim', {
  body: '', 
  icon: '',

  });
  setTimeout(function(){
  notification.close();
  }, 3000); 
  }

  else if (Notification.permission !== 'denied') {

  Notification.requestPermission(function (permission) {

  if (permission === "granted") {
    var notification = new Notification('', {
      body: '', 
      icon: '',

    });
    setTimeout(function(){
notification.close();
}, 3000); 
   }
});
}
}

当我尝试离线时,按钮想要打开权限。当我打开它时,它不接受它并希望我重新打开它。它一直在继续。不要发给我通知。

当我上传网站的html时,按钮没有响应。该网站甚至没有要求许可。所以我甚至都没有收到错误。

Chrome是最新的。

解决

如果没有SSL,Chrome无法使用此代码。所以不行HTTP://工作HTTPS://。

1 个答案:

答案 0 :(得分:2)

以下是有关Chrome中通知的一些观察结果:

  1. 通知无法在本地文件(file://)中运行。如果您有本地网络服务器,请尝试将其放在那里,看它是否有效。它对我有用。
  2. 当您将其上传到服务器上时,如果它在iframe中加载并且iframes域与主Windows域不同,那么如果iframe的域名尚未被允许显示通知,则它不起作用。例如:如果您首先查看https://developer.mozilla.org/en-US/docs/Web/API/notification上的示例,它就不起作用。但是,如果您访问URL https://mdn.mozillademos.org/en-US/docs/Web/API/notification $ samples / Example?revision = 1326091,它会请求权限,一旦您允许,它就可以在那里和之前的链接一起使用。另一个例子是https://davidwalsh.name/demo/notifications-api.php。这可行,因为iframe域和顶部窗口域可能相同。
  3. 我只在HTTPS网站上看过工作通知。我没有在任何HTTP网站上看到它(http://localhost除外)。因此(HTTPS)也可能是通知工作的要求之一。
  4. 不幸的是,我没有找到任何记录/确认这些观察结果的链接。