我关注了html 5桌面通知的http://www.beakkon.com/tutorial/html5/desktop-notification教程。该页面上的演示适用于我。如果我复制整个代码它是这样的,但是......当我从javascript调用该方法时,它不会显示通知或permision请求。相反,它会提升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>
Google Chrome:9.0.597.84(Oficiálnísestavení72991)
WebKit:534.13
答案 0 :(得分:8)
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();
}
}
如上所述,将通知创建放在条件语句中,当回调被触发时,它将保证具有权限。
答案 1 :(得分:0)
我相信createHtmlNotification只接受一个参数,就是这样 HTML文档的URL。