Hacer que la ventana del navegador parpadee en la barra de tareas


¿Cómo puedo hacer que el navegador de un usuario parpadee/destelle/resalte en la barra de tareas usando JavaScript? Por ejemplo, si hago una solicitud AJAX cada 10 segundos para ver si el usuario tiene algún mensaje nuevo en el servidor, quiero que el usuario lo sepa de inmediato, incluso si está usando otra aplicación en ese momento.

Editar: Estos usuarios quieren distraerse cuando llega un nuevo mensaje.

Author: Marco Bonelli, 2008-09-01

11 answers

Esto no hará que el botón de la barra de tareas parpadee en colores cambiantes, pero el título parpadeará y se apagará hasta que muevan el ratón. Esto debería funcionar multiplataforma, e incluso si solo lo tienen en una pestaña diferente.

newExcitingAlerts = (function () {
    var oldTitle = document.title;
    var msg = "New!";
    var timeoutId;
    var blink = function() { document.title = document.title == msg ? ' ' : msg; };
    var clear = function() {
        clearInterval(timeoutId);
        document.title = oldTitle;
        window.onmousemove = null;
        timeoutId = null;
    };
    return function () {
        if (!timeoutId) {
            timeoutId = setInterval(blink, 1000);
            window.onmousemove = clear;
        }
    };
}());

Actualizar : Es posible que desee mirar el uso de Notificaciones HTML5.

 81
Author: nickf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-06 20:00:55

He creado un complemento de jQuery con el propósito de parpadear los mensajes de notificación en la barra de título del navegador. Puede especificar diferentes opciones como intervalo de parpadeo, duración, si el parpadeo debe detenerse cuando la ventana / pestaña se enfoca, etc. El plugin funciona en Firefox, Chrome, Safari, IE6, IE7 e IE8.

Aquí hay un ejemplo de cómo usarlo:

$.titleAlert("New mail!", {
    requireBlur:true,
    stopOnFocus:true,
    interval:600
});

Si no está utilizando jQuery, es posible que aún desee mirar el código fuente (hay algunos errores peculiares y casos extremos que necesita solucionar al hacer parpadeo de título si desea admitir completamente todos los navegadores principales).

 53
Author: heyman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-07 23:04:23

Supuestamente puedes hacer esto en Windows con la API de javascript growl for windows:

Http://ajaxian.com/archives/growls-for-windows-and-a-web-notification-api

Los usuarios tendrán que instalar growl.

Eventualmente esto va a ser parte de google gears, en forma de NotificationAPI:

Http://code.google.com/p/gears/wiki/NotificationAPI

Así que recomendaría usar el enfoque growl por ahora, volviendo a actualizaciones de título de ventana si es posible, y ya ingeniería en los intentos de utilizar la API de notificación Gears, para cuando finalmente esté disponible.

 6
Author: Joeri Sebrechts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-01 05:14:58

Mi respuesta de "interfaz de usuario" es: ¿Estás seguro de que tus usuarios quieren que sus navegadores parpadeen, o crees que eso es lo que quieren? Si yo fuera el que usa su software, sé que estaría molesto si estas alertas sucedieran muy a menudo y se interpusieran en mi camino.

Si está seguro de que desea hacerlo de esta manera, use un cuadro de alerta de javascript. Eso es lo que hace Google Calendar para recordatorios de eventos, y probablemente lo piensen un poco.

Una página web realmente no es la mejor medio para alertas de necesidad. Si usted está diseñando algo en la línea de " ZOMG, los servidores están abajo!"las alertas, los correos electrónicos automatizados o los mensajes SMS a las personas adecuadas podrían hacer el truco.

 4
Author: Rudi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-01 04:34:41

La única manera que se me ocurre de hacer esto es haciendo algo como alert('tienes un nuevo mensaje') cuando se recibe el mensaje. Esto parpadeará la barra de tareas si la ventana está minimizada, pero también abrirá un cuadro de diálogo, que puede que no desee.

 3
Author: Robin Barnes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-31 21:34:47

¿Por qué no adoptar el enfoque que usa GMail y mostrar el número de mensajes en el título de la página?

A veces los usuarios no quieren distraerse cuando llega un nuevo mensaje.

 3
Author: andyuk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-31 22:00:47
                var oldTitle = document.title;
                var msg = "New Popup!";
                var timeoutId = false;

                var blink = function() {
                    document.title = document.title == msg ? oldTitle : msg;//Modify Title in case a popup

                    if(document.hasFocus())//Stop blinking and restore the Application Title
                    {
                        document.title = oldTitle;
                        clearInterval(timeoutId);
                    }                       
                };

                if (!timeoutId) {
                    timeoutId = setInterval(blink, 500);//Initiate the Blink Call
                };//Blink logic 
 3
Author: Rikki Goswami,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-24 16:20:54

Es posible que desee probar la ventana.focus () - pero puede ser molesto si la pantalla cambia

 2
Author: Sugendran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-01 04:47:39

Puede cambiar el título de la página web con cada nuevo mensaje para alertar al usuario. Hice esto para un cliente de chat del navegador y la mayoría de los usuarios pensaron que funcionaba lo suficientemente bien.

document.title = "[user] hello world";
 1
Author: Toran Billups,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-01 00:12:27

AFAIK, no hay una buena manera de hacer esto con consistencia. Estaba escribiendo un cliente de mensajería instantánea basado solo en Internet Explorer. Terminamos usando Window.focus (), que funciona la mayor parte del tiempo. A veces, en realidad hará que la ventana robe el enfoque de la aplicación en primer plano, lo que puede ser realmente molesto.

 1
Author: Chase Seibert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-02 02:26:07

Estos usuarios quieren distraerse cuando llega un nuevo mensaje.

Parece que estás escribiendo una aplicación para un proyecto interno de la empresa.

Es posible que desee investigar escribir una pequeña aplicación de Windows en.net que agrega un icono de notificación y luego puede hacer ventanas emergentes de lujo o ventanas emergentes de globo o lo que sea, cuando reciben nuevos mensajes.

Esto no es demasiado difícil y estoy seguro de que si usted pregunta TAN 'cómo muestro un icono de bandeja' y 'cómo hago pop-up notificaciones' obtendrá algunas respuestas excelentes: -)

Para el registro, estoy bastante seguro de que (aparte de usar un cuadro de diálogo de alerta/solicitud) no puede parpadear la barra de tareas en JS, ya que esto es muy específico de Windows, y JS realmente no funciona así. Es posible que pueda usar algunos controles activex de WINDOWS específicos de IE, pero luego inflige IE a sus usuarios pobres. No hagas eso: - (

 0
Author: Orion Edwards,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-31 23:03:56