2011-02-06 34 views
4

我跟着http://www.beakkon.com/tutorial/html5/desktop-notification html5桌面通知教程。该页面上的演示适用于我。如果我复制整个代码,它的工作原理如此,但是...当我从javascript调用方法时,它不会显示通知或允许请求。相反,它会提高SECURITY_ERR: DOM Exception 18webkitNotifications - SECURITY_ERR:DOM例外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)

WebKit的:534.13

回答

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(); 
    } 
} 

与上面的注意,将在条件语句通知创造,当回调被炒鱿鱼这将保证有权限。

0

相信createHtmlNotification只接受一个参数,就是要 的URL的HTML文档。

+0

我的问题是,它在一种情况下工作,而不在另一种情况下。你所描述的将导致在两种情况下都不工作 – Mailo 2011-02-06 15:02:19

+0

有简单的通知(带有3个参数)和显示网页的http通知。文档和示例代码可在html5rocks.com上找到。 http://playground.html5rocks.com/#simple_notifications – Patrick 2011-11-01 14:24:17

相关问题