html - webkitNotifications - SECURITY_ERR : DOM Exception 18 - script, OK - 按钮

标签 html google-chrome notifications

我关注了http://www.beakkon.com/tutorial/html5/desktop-notification html 5 桌面通知教程。该页面上的演示对我有用。如果我复制整个代码,它可以正常工作,但是......当我从 javascript 调用该方法时,它不会显示通知或权限请求。相反,它会引发 SECURITY_ERR: DOM Exception 18 .

似乎错误是由创建通知本身的行引发的。

有没有人粘上为什么按钮可以工作而直接调用函数却不行?

我当前的代码:

function RequestPermission(callback)
{
  window.webkitNotifications.requestPermission(callback);
}

function notif() {
  if (window.webkitNotifications.checkPermission() > 0) {
    RequestPermission(notif);
  }

  notification = window.webkitNotifications.createHTMLNotification('http://localhost:3000/images/rails.png');
  notification.show();
}

不计算:
notif();

计算:
<button onclick="notif()">NOTIFY</button>

谷歌浏览器:9.0.597.84(Oficiální sestavení 72991)

网络套件:534.13

最佳答案

SECURITY_ERR: DOM Exception 18如果用户不允许您的请求获得通知,则有效。

发生这种情况的原因仅仅是因为 requestPermission是异步的。一旦用户单击“允许”以获得授予权限,它将允许您使用 HTML5 通知功能。

在您的情况下,您无需等待用户单击“允许”按钮,而是自动尝试创建 HTML5 通知,而无需等待他们的确认。如果您重新排列条件,它应该可以工作。

function RequestPermission(callback) {
  window.webkitNotifications.requestPermission(callback);
}

function notif() {
  if (window.webkitNotifications.checkPermission() > 0) {
    RequestPermission(notif);
  } else {
    notification = window.webkitNotifications.createHTMLNotification('http://localhost:3000/images/rails.png');
    notification.show();
  }
}

正如您在上面注意到的,将通知创建放在条件语句中,当回调被触发时,它将保证拥有权限。

关于html - webkitNotifications - SECURITY_ERR : DOM Exception 18 - script, OK - 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4913866/

相关文章:

javascript - channel 顾问/Ebay 图像质量问题

javascript - 在不同浏览器中设置window.location.protocol

iphone - 只让本地通知出现一次

tomcat - 在 Hadoop 中实现作业结束通知监听器

javascript - 如何重新聚焦创建 HTML5 通知的窗口?

javascript - 如何在 Safari 中隐藏视频字幕?

php - 如何根据用户的角色从侧面导航栏中隐藏/删除选项? (最佳实践)

javascript - 如何获取img的ID,然后使用它来更改DIV的内容

javascript - translateZ 后鼠标向上/单击事件未触发

javascript - 通过 javascript 脚本后,SVG 图像未显示在 Chrome 中