web-dev-qa-db-ja.com

Webkit通知requestPermission関数が機能しない

WebKitのネイティブデスクトップ通知のサポートを自分のサイトに実装しようとしています。通知を使用するためのユーザーの許可を求めようとすると、まったく何も起こりません。たとえば、次のHTMLは、許可を求めるためにChromeを要求しません:

<html lang="en">
<head></head>

<body>
    <h1>Testing</h1>
    <script>
        window.webkitNotifications.requestPermission();
    </script>
</body>
</html>

私のバージョンのChromeは、他のサイト(例: http://www.html5rocks.com/tutorials/notifications/quick/ ))に問題がないことを知っています。完全に正常に動作します。プロンプトとその後の通知の両方が表示されます。

26
Alexey Blinov

chromium api docs で仕様を確認してください。これは、ユーザーのジェスチャー/アクション(マウスクリックなど)へのフィードバックとしてのみ呼び出すことができます。

requestPermissionスクリプトからの通知を表示する許可をユーザーエージェントがユーザーに要求することを要求します。 このメソッドは、ユーザージェスチャを処理しているときにのみ呼び出す必要があります;他の状況では効果がありません。このメソッドは非同期です。コールバックで提供される関数は、ユーザーが許可要求に応答したときに呼び出されます。現在のアクセス許可レベルがPERMISSION_DENIEDの場合、ユーザーエージェントはrequestPermissionに応答してアクションを実行しない場合があります。

UPDATE 2014-10-01:In Chrome 37、 ユーザージェスチャー要件が削除されました =。通知を表示する許可をいつでもリクエストできるようになりました。古いバージョンのChromeも(企業環境など))をターゲットにする場合は、おそらくユーザージェスチャーイベントに依存し続ける必要があります。

50
Tom Tu

ローカルファイル(file://)の通知を確認すると、アクセス許可がポップアップしますが、Chromeでは通知が機能しません。

回避策として、変更することができます

コンテンツ設定>通知>すべてのWebサイトに通知の表示を許可する

通知を表示する最短のコード

var notification = new Notification("YOUR MESSAGE");
2
Zaheer