Я пытаюсь сделать веб-уведомление, которое отлично работает на firefox и microsoft edge. даже на сафари он работал нормально. но он не хочет работать на хроме. и он не показывает ошибок. это мой код:
<script>
window.setInterval(function(){notifyMe();}, 5000);
function notifyMe() {
if (!("Notification" in window)) {
alert("This browser does not support desktop notification");
} else if (Notification.permission === "granted") {
var data = []
data['title'] = "notification's title";
data['body'] = "notification's body";
var notification = new Notification(data['title'], {
'body': data['body']
});
notification.onclick = function(event) {
window.open('https://www.example.com/', '_blank');
}
} else if (Notification.permission !== "denied") {
Notification.requestPermission().then(function (permission) {
if (permission === "granted") {
var notification = new Notification("really");
}
});
}
}
</script>
Ваш веб-сайт обслуживается с использованием https://
- поскольку Chrome не поддерживает API уведомлений о небезопасных источниках (например, http://
)
В противном случае ваш код отлично работает в Chrome.
Я знаю, как использовать инструменты разработчика, но поверьте, в Chrome нет журналов ошибок, связанных с этой проблемой. в любом случае большое спасибо, когда я нажал на продакшн, который обслуживает https, он работал с хромом. так что да, вы правы. Спасибо большое
Хорошо, извините за обратное - я получаю это предупреждение в консоли Chrome - возможно, вы отключили "Уровень информации" в средстве выбора уровней?
Я столкнулся с той же проблемой. Можете ли вы подтвердить, что в Chrome нельзя включить уведомления для сайтов с http-происхождением?
HTTPS (Chrome default mode)
HTTP
хром: // настройки / контент / уведомления
откройте chrome://flags/
, затем найдите notification
включить уведомление
demo codes
"use strict";
/**
*
* @author xgqfrms
* @license MIT
* @copyright xgqfrms
* @created 2019-08-17
*
* @description
* @augments
* @example
* @link
*
*/
let log = console.info;
const webNotificationApp = (debug = false) => {
try {
if ("Notification" in window) {
// let ask = window.Notification.requestPermission();
let ask = Notification.requestPermission();
ask.then(
// Permission
(permission) => {
log(`permission =`, permission);
if (permission === "granted") {
log(`permission granted`);
let msg = new Notification("App Upgrade Info", {
body: "a new version app is available, click download: https://app.xgqfrms.xyz/download",
icon: "https://cdn.xgqfrms.xyz/logo/icon.png",
});
msg.addEventListener(`click`, (e) => {
let btn = e.target.dataset(`btn-type`);
if (btn === "ok") {
log(`OK`);
} else {
log(`Cancel`);
}
alert(`clicked notification`);
});
}else {
log(`notification permission is denied!`);
}
}
)
} else {
console.warn(`your browser is too old, which not support web notification!`);
}
} catch (err) {
console.error(`error =`, err);
}
};
document.addEventListener(`DOMContentLoaded`, () => {
log(`DOMContentLoaded`);
webNotificationApp();
});
// export default webNotificationApp;
// export {
// webNotificationApp,
// };
Вот почему Chrome не работает - вы должны увидеть ошибку в консоли о том, что API уведомлений устарел - возможно, вы ищете не в том месте. Консоль инструментов разработчика - обычно к ней можно добраться, нажав F12.