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

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

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

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

4b9b3361

Ответ 1

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

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.

Ответ 2

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

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

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

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

Ответ 3

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

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

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

В конце концов, это будет часть движков google, в виде NotificationAPI:

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

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

Ответ 4

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

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

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

Ответ 5

                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 

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

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

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

Ответ 10

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

Ответ 11

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

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

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

Это не слишком сложно, и я уверен, что если вы спросите "как показать иконку в трее" и "как я могу всплывать уведомления", вы получите отличные ответы: -)

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

Ответ 12

function blinkTab() {
        const browserTitle = document.title;
        let timeoutId;
        let message = 'My New Title';

        const stopBlinking = () => {
            document.title = browserTitle;
            clearInterval(timeoutId);
        };

        const startBlinking = () => {
            document.title = document.title  === message ? browserTitle : message;
        };

        function registerEvents() {
            window.addEventListener("focus", function(event) { 
                stopBlinking();
            });

            window.addEventListener("blur", function(event) {
                const timeoutId = setInterval(startBlinking, 500);
            });
        };

        registerEvents();
    };


    blinkTab();