2011-02-06 23 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

相關問題