Подтвердить что ты не робот

Как активировать вкладку браузера браузера при нажатии на уведомление браузера в 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

4b9b3361

Ответ 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();
      }
    })
  );
});