Сделать окно браузера мигающим в панели задач

StackOverflow https://stackoverflow.com/questions/37122

  •  09-06-2019
  •  | 
  •  

Вопрос

Как заставить браузер пользователя мигать / мигать / выделяться на панели задач с помощью JavaScript? Например, если я делаю AJAX-запрос каждые 10 секунд, чтобы проверить, есть ли у пользователя какие-либо новые сообщения на сервере, я хочу, чтобы пользователь знал об этом сразу, даже если он использует другое приложение в то время.

Изменить. Эти пользователи хотят отвлекаться при получении нового сообщения.

Это было полезно?

Решение

это не заставит кнопку панели задач мигать изменяющимися цветами, но заголовок будет мигать, пока они не будут двигать мышь. Это должно работать кроссплатформенно, и даже если они просто есть в другой вкладке.

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;
        }
    };
}());
<Ч>

Обновление : вы можете посмотреть, используя уведомления HTML5 .

Другие советы

Я создал плагин jQuery для этой цели. мигающих уведомлений в строке заголовка браузера. Вы можете указать различные параметры, такие как интервал мигания, продолжительность, если мигание должно прекратиться, когда окно / вкладка сфокусировано и т. Д. Плагин работает в Firefox, Chrome, Safari, IE6, IE7 и IE8.

Вот пример того, как его использовать:

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

Если вы не используете jQuery, вы все равно можете посмотреть на исходный код (есть несколько причудливых ошибок и крайних случаев, с которыми вам нужно обойтись при мигании заголовка, если вы хотите полностью поддерживать все основные браузеры).

Предположительно, вы можете сделать это в Windows с помощью API-интерфейса рычагов для Windows:

http://ajaxian.com/archives / рычит-для-окна-и-веб-уведомление-апи

Ваши пользователи должны будут установить рычание.

В конечном итоге это будет частью Google Gears в форме NotificationAPI:

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

Поэтому я бы порекомендовал использовать подход рычания на данный момент, по возможности возвращаясь к обновлениям заголовков окон, и уже пытаясь использовать API уведомлений Gears, когда он в конечном итоге станет доступным.

Мой " пользовательский интерфейс " Ответ таков: вы уверены, что ваши пользователи хотят, чтобы их браузеры мигали, или вы думаете , что они хотят? Если бы я пользовался вашим программным обеспечением, я бы был недоволен, если бы эти предупреждения возникали очень часто и мешали мне.

Если вы уверены, что хотите сделать это таким образом, используйте окно предупреждения javascript. Это то, что делает Календарь Google для напоминаний о событиях, и они, вероятно, обдумали это.

Веб-страница действительно не лучшая среда для оповещений, которые необходимо знать. Если вы разрабатываете что-то вроде "ZOMG", серверы не работают! " оповещения, автоматические электронные письма или SMS-сообщения нужным людям могут помочь.

Единственный способ, которым я могу думать об этом, - это сделать что-то вроде оповещения («у вас есть новое сообщение») при получении сообщения. Если всплывающее окно будет свернуто, при этом будет мигать панель задач, но также откроется диалоговое окно, которое вам может не понадобиться.

Почему бы не воспользоваться подходом, который использует GMail, и показать количество сообщений в заголовке страницы?

Иногда пользователи не хотят отвлекаться при получении нового сообщения.

                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 

Возможно, вы захотите попробовать window.focus () - но это может раздражать, если экран переключается

вы можете изменять заголовок веб-страницы с каждым новым сообщением, чтобы предупредить пользователя. Я сделал это для клиента чата браузера, и большинство пользователей думали, что это работает достаточно хорошо.

document.title = "[user] hello world";

AFAIK, нет хорошего способа сделать это последовательно. Я писал веб-клиент только для IE. В итоге мы использовали window.focus (), который работает большую часть времени. Иногда это фактически приводит к тому, что окно крадет фокус у приложения переднего плана, что может быть очень раздражающим.

  

Эти пользователи хотят отвлекаться, когда приходит новое сообщение.

Похоже, вы пишете приложение для внутреннего проекта компании.

Возможно, вы захотите изучить написание небольшого приложения для Windows в .net, которое добавляет значок уведомления, а затем может создавать модные всплывающие окна, всплывающие подсказки или что угодно, когда они получают новые сообщения.

Это не слишком сложно, и я уверен, что если вы спросите ТАК «как я показываю иконку в трее» и «как сделать всплывающие уведомления», вы получите отличные ответы: -)

Кстати, я уверен, что (кроме использования диалогового окна предупреждения / приглашения) вы не можете прошить панель задач в JS, так как это сильно зависит от Windows, и JS действительно не работает так , Возможно, вы сможете использовать некоторые элементы управления ActiveX для Windows, характерные для IE, но тогда вы навязываете IE своим бедным пользователям. Не делай этого: - (

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top