イベントが発生したときに通知を表示するWebサイトを作成しようとしています。私はthe MDN page for Notificationsをチェックして、Firefox Developer Edition 58.0b7で動作する例を書いたが、Edge 40.15063.674.0とChrome 62.0.3202.94(Windows 10の場合)で奇妙な動作をしている。お使いのコンピュータ内のファイルにそのコードの保存ブラウザ間で通知を表示する方法
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>test</title>
</head>
<body>
<script>
function notify(str) {
if(!("Notification" in window) || Notification.permission === "deneided") {
return alert(str);
}
if (Notification.permission === "granted") {
return new Notification("TITLE", {body: str});
}
Notification.requestPermission().then(perm => {
console.log("request result", perm);
console.log("Notification.permission", Notification.permission);
if (perm === "granted") {
return new Notification("TITLE", {body: str});
}
});
}
notify("test");
</script>
</body>
</html>
し、ブラウザでそれを開きます。ここでは
は最小完全な検証例です。
- Firefoxでは、尋ねられるたびに許可を与えて、通知が表示されるときはいつでも許可します。
- Chromeでは、権限を付与すると、権限要求が
"granted"
を返しましたが、Notification.permission
は依然として「デフォルト」であり、通知は表示されません。notify
を再度実行すると、通知を表示する権限を求める別のダイアログが表示されます。 - エッジでは、アクセス許可を付与した後、
Notification.permission
はgranted
ですが、新しい通知を作成しようとするとUnknownError
になります。
Firefoxで動作しているのにEdgeやChromeで動作していないのはなぜですか?少なくともChromeでうまく動作させるにはどうすればいいですか?
。通知は表示されず、 'Notification.permission'はページをリロードした後でも' 'default''です。 – Hawkings