【问题标题】:Webkit notifications requestPermission function doesn't workWebkit 通知 requestPermission 功能不起作用
【发布时间】:2011-06-29 17:35:54
【问题描述】:

我正在尝试在我的网站上实现对 WebKit 的本机桌面通知的支持。当我尝试请求用户允许使用通知时,绝对没有任何反应。例如,以下 HTML 不会提示 Chrome 请求我的许可:

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

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

我知道我的 Chrome 版本没有问题,因为其他网站(例如 http://www.html5rocks.com/tutorials/notifications/quick/)运行良好:我可以看到提示和后续通知。

【问题讨论】:

  • 即使您获得了弹出权限栏,如果您使用本地 file:/// URL,通知仍然不会显示。将文件移动到 http:// 位置后,window.webkitNotifications.createNotification.show() 将显示通知。
  • 那我们如何在本地测试呢? @DanDascalescu

标签: html google-chrome webkit notifications html5-notifications


【解决方案1】:

查看chromium api docs 的规范。您只能将其称为对用户手势/动作(鼠标单击等)的反馈。

requestPermission 请求 用户代理请求用户许可 显示来自脚本的通知。 这个方法只能被调用 在处理用户手势时;在 其他情况将没有 影响。此方法是异步的。 回调中提供的函数将 当用户响应时调用 到权限请求。如果 当前权限级别是 PERMISSION_DENIED,用户代理可以 不采取任何行动回应 请求权限。

2014 年 10 月 1 日更新:在 Chrome 37 中,the user gesture requirement was removed。现在应该可以随时请求显示通知的权限。如果您也希望针对旧版本的 Chrome(例如,在公司环境中),您可能需要继续依赖用户手势事件。

【讨论】:

  • 这个页面上的例子只是请求'click'事件的权限,但它仍然不起作用:html5rocks.com/en/tutorials/notifications/quick
  • 如果您检查错误控制台,您会发现 twitter 更改了他们的 API,并且演示现在已损坏
  • “设置此页面的通知权限”按钮也不起作用。
  • 对我有用 - 在 chrome 24 中会弹出一个功能区并要求您允许通知 - 如果您允许它,一旦它不再弹出,您需要清理它在设置中(chrome://settings/contentExceptions#notifications)
  • 在按钮下方特别说明:“如果您还想重置权限,请使用此按钮”。无论我在 Chrome 中为通知列出了哪些“例外”,该按钮都不会为我做任何事情。
【解决方案2】:

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

作为一种变通方法,您可以更改

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

显示通知的最短代码

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

【讨论】:

    猜你喜欢
    • 2016-12-11
    • 2020-09-13
    • 2019-02-04
    • 2017-09-16
    • 2021-07-30
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 2021-12-25
    相关资源
    最近更新 更多