25

我试图在我的网站上实现对WebKit本机桌面通知的支持。当我尝试要求用户使用通知的权限时,绝对没有任何反应。例如,下面的HTML不会提示Chrome浏览器问我的权限:Webkit通知requestPermission函数不起作用

<html lang="en"> 
<head></head> 

<body> 
    <h1>Testing</h1> 
    <script> 
     window.webkitNotifications.requestPermission(); 
    </script> 
</body> 
</html> 

我知道,有一个与我的版本的Chrome浏览器没有问题,因为其他网站(如http://www.html5rocks.com/tutorials/notifications/quick/)完全正常工作:我可以同时看到提示和随后的通知。

+5

即使你得到的弹出权限栏,如果你使用本地文件:/// URL,通知仍然不会显示。将文件移动到http://位置后,window.webkitNotifications.createNotification.show()将显示通知。 – 2012-11-11 04:09:39

+0

那么我们如何在本地进行测试呢? @DanDascalescu – 2016-01-15 02:57:19

回答

51

检查规范在chromium api docs。你可以把它仅仅作为一个反馈给用户手势/动作 - 点击鼠标等

requestPermission要求将 用户代理询问用户是否允许 显示来自脚本的通知。 此方法在处理用户手势时只能称为 ;在 其他情况下它不会有 的影响。这种方法是异步的。 当用户对权限请求回复 时,在回调中提供的功能将被调用 。如果 当前许可级别为 PERMISSION_DENIED,则用户代理可能不会响应 requestPermission而采取任何操作。

UPDATE 2014-10-01:在铬37,the user gesture requirement was removed。现在应该可以请求许可以随时显示通知。如果您希望定位旧版Chrome(例如,在公司环境中),则可能需要继续依靠用户手势事件。

2

用于检查本地文件(file://)权限的通知将弹出,但通知不会在chrome上工作。

这样的工作,你身边可以改变

内容设置>通知>允许所有网站显示通知

最短代码来显示通知

var notification = new Notification("YOUR MESSAGE");