0

У меня есть требование, когда нам нужно предупредить пользователя о каком-либо событии, которое произошло в браузере, даже если окно сведено к минимуму. В браузере мы используем тосты от toastr, и это отлично работает, если пользователь уже находится в окне браузера. У нас также есть уведомления html5, поэтому в этом случае это не проблема, но многие пользователи не обязательно будут иметь это.Предупреждать пользователя о событиях в браузере при минимизации окна - кроме уведомления html5

Если окно сведено к минимуму, было бы замечательно, если бы элемент панели задач браузера в Windows начинал мигать или на Mac-bouncing. Я пытался сделать window.focus(), когда произойдет событие, но это, похоже, ничего не делает.

+1

Это именно то, что [Notification API] (https://developer.mozilla.org/en-US/docs/Web/API/notification) для , – Sukima

+0

Хороший старый 'alert' сделал это один раз для некоторых браузеров. К счастью, больше нет. – Kapep

+0

@kapep В chrome он все еще делает. –

ответ

0

Современные браузеры реализуют Notification API. Вот пример:

(function() { 
 
    var button, output; 
 

 
    function scheduleNotifyTheUser() { 
 
    output.innerHTML = "Stand by…"; 
 
    setTimeout(notifyTheUser, 1000); 
 
    } 
 
    
 
    function notifyTheUser() { 
 
    output.innerHTML = "Ding! You have a message!"; 
 
    new Notification("Something Happened", { 
 
     body: "You should totally check this out!" 
 
    }); 
 
    } 
 
    
 
    document.addEventListener("DOMContentLoaded", function() { 
 
    button = document.getElementById("gobtn"); 
 
    output = document.getElementById("output"); 
 
    output.innerHTML = "Requesting permission…"; 
 
    Notification.requestPermission(function(permission) { 
 
     if (permission !== "granted") { 
 
     output.innerHTML = "Notifications disabled."; 
 
     return; 
 
     } 
 
     button.addEventListener("click", scheduleNotifyTheUser); 
 
     output.innerHTML = "Ready."; 
 
    }); 
 
    }); 
 
})();
<button id="gobtn">Make something happen in one second from now</button> 
 
<div id="output"></div>

+0

По какой-то причине, когда окно сведено к минимуму, задержка 7-8 секунд пока отображается уведомление (я использую хром). Любая идея почему? –

+0

Скорее всего потому, что окно не в фокусе. Браузер хорош и замедляет страницу вниз, когда она не находится на переднем крае (используется), и поэтому вероятность выполнения операций будет уменьшена. По крайней мере, я предполагаю, что это так, так как я не знаю вашего кода. Если вам нужно больше ресурсов из ОС, а затем обратно на землю веб-страницы, то вы смотрите на создание собственного настольного приложения. Node-webkit может быть вариантом, если вы хотите использовать HTML/JavaScript для настольного приложения. – Sukima

+0

Да, это уведомления на рабочем столе ... очень приятно, но я уже их использую. Я просил чего-то другого, кроме этого. Что-то, что просто заставило бы элемент панели задач отскакивать или мигать. Угадайте, нет ничего, хотя – Pompey