我关注了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/