2011-02-06 15 views
4

html5デスクトップ通知のチュートリアルに続いてhttp://www.beakkon.com/tutorial/html5/desktop-notificationが続きました。そのページのデモは私の仕事です。私はコード全体をコピーする場合、それは動作しますが、...私はjavascriptからメソッドを呼び出すとき、通知またはパーミッションの要求を表示しません。代わりに、それはSECURITY_ERR: DOM Exception 18を発生させます。webkitNotifications - SECURITY_ERR:DOM例外18 - スクリプト、OK - ボタン

通知自体を作成する行によってエラーが発生しているようです。

なぜボタンが動作し、関数を直接呼び出すのが誰に接着していませんか?


私の現在のコード:

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

答えて

8

は、ユーザーからのリクエストが許可されていない場合に有効です。

この理由は、単に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

ありがとうございます。しかし、なぜnotif()のスクリプト内呼び出しがrequestPermisionを起動しないのか、私にとってはまだ謎です。今、ページをロードするときに何もしません(エラーを投げるなど)、ボタンをクリックしてパーミッションを与え、ページをリロードして通知が来ます。 ありがとうございました – Mailo

+0

(条件を修正した後で)あなたのコードがうまくいくはずです。ユーザーが通知許可を許可すると、自動的にポップアップが表示されます(更新する必要はありません)。 –

+0

はい、でも、javascriptからnotif()を呼び出すと、onclick = "notif()"のクリックボタンの前に何もしないでください。 – Mailo

0

私はcreateHtmlNotificationが唯一つのパラメータを受け取り、それはHTML文書に URLすることであると信じています。

+0

私の問題は、あるケースでは動作し、別のケースでは動作しないということです。あなたが記述したことは、どちらのケースでも動作しないことにつながります。 – Mailo

+0

Webページを表示する単純な通知(3つのパラメータ付き)とhttp通知があります。 html5rocks.comで提供されているドキュメントとサンプルコード。 http://playground.html5rocks.com/#simple_notifications – Patrick

関連する問題