Как активировать вкладку браузера браузера при нажатии на уведомление браузера в Chrome?
Я пытаюсь настроить уведомление обозревателя для проекта, над которым я работаю. Код, который у меня есть до сих пор:
// Notification permissions logic handled before...
var notification = new Notification('Title', { body: 'Message' });
notification.onclick = function (e) {
window.focus();
// this.cancel();
};
setTimeout(notification.close.bind(notification), 5000);
Уведомления отлично работают с этим кодом, за исключением одного. В Chrome щелчок на уведомлении не устанавливает фокус на окне браузера. В Firefox это поведение является родным из коробки, и оно отлично работает без обработчика щелчка, определенного выше. Я искал решение для этого для Chrome и нашел следующее:
Как получить фокус на вкладке при нажатии на уведомление о рабочем столе в Firefox?
Как получить фокус на вкладке Chrome, которая создала уведомление на рабочем столе?
Однако предлагаемые принятые решения не работают для меня - событие запускается, но фокус не установлен.
Есть ли у кого-нибудь предложения, как правильно это сделать?
Версия Chrome: версия 44.0.2403.130 м
Версия для Firefox: 40.0
Ответы
Ответ 1
Это хакерское решение, но если вы зарегистрировали сервисного работника, вы можете сделать что-то вроде этого.
На странице клиента:
yourServiceWorkerRegistration.showNotification('Title', {
body: 'Message',
});
В службе:
self.addEventListener('notificationclick', event => {
event.notification.close();
event.waitUntil(
clients.matchAll({
type: "window",
})
.then(clientList => {
if (clientList.length) {
clientList[0].focus();
}
})
);
});