12

次のコマンドを実行して、ブラウザからのデスクトップ通知を許可または拒否するようにユーザーに促すことができます。

Notification.requestPermission(callback);

しかし、その許可をコードで削除することは可能ですか? ユーザーに通知を切り替えるオプションを提供したいと考えています。これは JavaScript で実現できますか、それともそのオプションを別の場所に保存する必要がありますか?

4

2 に答える 2

9

いいえ、スクリプトが通知を表示する許可をプログラムで放棄する方法はありません。API 仕様には、以外のパーミッション関連の機能はありませんrequestPermission。(もちろん、ブラウザには、ユーザーがドメインのアクセス許可を取り消すことができるオプション メニューがある場合がありますが、それはブラウザ レベルのオプションであり、サイト レベルのオプションではありません。たとえば、Chrome では、このオプション メニューを次のように表示できます。アドレス バーの左側にあるアイコンをクリックします。)

通知を表示したくない場合は、単純に を呼び出さないでくださいnew Notification

new Notificationすべての呼び出しを内側の条件にラップすることができます。

if(notifications_allowed) {
    new Notification(...);
}

または、Notificationコンストラクターを書き直して条件を含め、必要に応じてオリジナルを呼び出すことができNotificationます。

(function() {
    var oldNofitication = Notification;
    Notification = function() {
        if(notifications_allowed) {
            oldNotification.apply(this, arguments);
        }
    }
})();

ベンダー接頭辞付きのコンストラクタまたは関数 (例: webkitNotifications.createNotification) を使用する場合は、オプション変数を条件とするように、それらのそれぞれも同様に書き直す必要があります。

于 2015-02-12T13:19:23.347 に答える