2017-09-15 8 views
0

この関数にコールバックを追加します:Notification.requestPermission()。問題は私が正確にそれが(その機能)がトリガーされる時がわからないことです。そのため、ユーザが毎回"ALLOW""BLOCK"または"X"(close)をクリックすることを達成するために、ブラウザの通知許可ボックスをクリックするかそのようなものにバインドする必要があると思いますJavaScriptのファイルがクリックされたものボタン見つけ出しと、このような何かを行います。トリガされた瞬間に関数にコールバックを追加するには?

if (result === 'denied') 
{ 
    console.log('Permission wasn\'t granted. Allow a retry.'); 
    return; 
} 
if (result === 'default') 
{ 
    console.log('The permission request was dismissed.'); 
    return; 
} 
if (result === 'accepted') 
{ 
    console.log('The permission request was accepted.'); 
    return; 
} 

私の問題は、私はそれが↓

以下のようなそのブラウザの通知許可ボックスにバインドさすることができますかわからないです

browser notification permission box

I許可のプロンプト、つまりNotification.requestPermission()の機能を呼びたくない。私はちょうどPermissionが変更されたことを検出し、その結果で何かしたいです。

+0

で結果を保存します[Promises](https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Promise)を使用してください。あなたは 'Notification.requestPermission()を使用することができます。次に(function(permission){...});' – collimarco

+0

問題は私が許可プロンプト、すなわち 'Notification.requestPermission()'を呼びたくないということです。 'Permission'が変更されたときを検出し、その結果で何かを行います。 –

+0

[pushsubscriptionchangeイベント](https://developer.mozilla.org/en/US/docs/Web/API/ServiceWorkerGlobalScope/onpushsubscriptionchange)と 'Notification.permission'の組み合わせで試してみることもできます – collimarco

答えて

1

通常、ページの読み込みの許可を求めます。 jQueryを使ってあなたが洙

jQuery(document).ready(function() { 
if (!("Notification" in window)) { 
    console.log("This browser does not support desktop notification"); 
} else if (Notification.permission !== 'denied') { 
    Notification.requestPermission(function(permission) { 
     if (!('permission' in Notification)) { 
      Notification.permission = permission; 
     } 
    }); 
} 
}); 
0

ような何かを行うことができます 、私は右のあなたを理解していれば、全くわからないんだけど、私はあなたが通知許可ボックスに自分のものをバインドする必要はないと思います。

MDNによれば、これを行うには、次の2つの方法があります:promisesを使用するか:

Notification.requestPermission().then(function(permission) { ... }); 

か、私はそれがの値を取得する方法を約束するために、より明白だと思うcallback

Notification.requestPermission(callback); 

あなたはコードを関数にラップし、パーミッションパラメータを確認することができます:

0その後、

およびコール:

Notification.requestPermission(doStuff(permission)); 

多分あなたはどのように理解する必要がグローバルVAR(私はあなたがええので、それをどうしたいのか分からない)

関連する問題