桌面通知未出现在 Chrome 中

Ian*_*vis 8 html javascript notifications google-chrome

我已经验证Notification.permission === 'granted',并且,'Notification' in window == true尽管以下 Javascript 不会在我的 Chrome 浏览器中显示通知,版本 70.0.3538.77(官方版本)(64 位)。

var notif = new Notification('title', {
    icon: 'https://placehold.it/120x120',
    body: 'body'
});
Run Code Online (Sandbox Code Playgroud)

我已经在 Chrome 控制台中执行了上述我知道我以前允许桌面通知的站点。我还验证了它在此位置设置为允许:通知设置为允许

小智 14

最近有同样的问题。我的解决方案是在 chrome://flags 中禁用“启用本机通知”。我无法看到通知的原因是因为浏览器想要显示本机通知,而我禁用了所有 Windows 通知。希望它会在将来对某人有所帮助:)

  • 这应该是选定的答案 (2认同)

小智 11

好吧,我写信以防万一有人觉得它有用。

我也遇到了这个问题,我尝试了不同的网站但没有成功。但是,@Don Reptile 的回答给了我一个可能出错的提示(我阻止了本机通知)。

我在 Windows 10 上,这是我从 Chrome 启用本机通知的地方。

启用 Windows 本机通知

  • 对我来说最糟糕的是……从Chrome的角度来看,没有任何线索——这个块的起源:Windows的设置。 (2认同)
  • Windows 还有一项名为“焦点辅助”的功能,启用后会无优先级地禁用所有通知。就我而言,我不记得我曾经启用过此功能(必须在某个时刻完成它,而且我可能不知道它在一段时间后不会再次启用),这是我的问题的原因。解决方案是将 Chrome 添加到优先级列表或完全禁用焦点辅助(如果您不使用它)。 (2认同)

Joe*_*ddy 7

在我的机器上,MacOS 在操作系统级别阻止了 Chrome 通知。

修复方法是:系统偏好设置 > 通知和焦点 > 启用 Chrome


小智 5

无法打开对话框的问题是http。Chrome 桌面通知仅适用于https协议。

我遇到过这个问题,并且花了很多时间来解决它。最后我得到了使用 https 的解决方案。

在这里我分享了代码,这样你就可以在 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");
    };
  }
}

notifyMe();
Run Code Online (Sandbox Code Playgroud)

来电notifyMe();显示通知