Мигающий document.title и IE7 (не так ли?) - PullRequest
2 голосов
/ 22 августа 2010

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

Это обычная задача, например, в какой-то социальной сети. Кстати, мой код JavaScript отлично работает в Chrome, Firefox, Opera, но не в IE7 (который я тестирую перед выпуском сайта)

IE7 ведет себя странно, потому что если я печатаю document.title в тексте отладки (вы можете увидеть в коде), он изменяется, но браузер по-прежнему показывает заголовок предыдущего документа

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

метод JS вызывается this.blink (true)

// other methods above and below ....

this.blink = function(Action)
{
    if (Action)
    {
        if (!this.blinking)
            this.oldTitle=top.document.title;
        else
            clearInterval(this.blinkTimer);

        // debug current title
        $('debugText').value = 'ORIGINAL ' + top.document.title + '\n' + $('debugHistory').value;

        this.blinkTimer = setInterval(function() {

            var msg='MSG', newTitle

            if (top.document.title == msg)
                newTitle =  '----';
            else
                newTitle =  msg;

            // assign title
        top.document.title =  newTitle;

            // debug blinking, is really changed but not shown <---
            $('debugText').value = 'BLINK ' + top.document.title + '\n' + $('debugHistory').value;

         }, 1000);

    }
    else
    {
        clearInterval(this.blinkTimer);

        if (this.blinking)
            top.document.title = this.oldTitle;
    }

    this.blinking = Action; 
}

Ответы [ 3 ]

1 голос
/ 08 октября 2010

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

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

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

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

0 голосов
/ 22 августа 2010

Попробуйте это в IE

this.blink = function (Action)
{
     if (Action)
    {

        if (!this.blinking)
            this.oldTitle=top.document.title;
        else
            clearInterval(this.blinkTimer);


        this.blinkTimer = setInterval(function() {

            var msg='MSG', newTitle

            if (top.document.title == msg)
                newTitle =  '----';
            else
                newTitle =  msg;

            // assign title
        top.document.title =  newTitle;


         }, 1000);

    }
    else
    {
        clearInterval(this.blinkTimer);

        if (this.blinking)
            top.document.title = this.oldTitle;
    }

    this.blinking = Action; 
}
  window.blink('now');​​​​

В большинстве случаев проблема в том, что window.onblur и т. Д. Не вызывает вашу функцию мерцания. Если вышеперечисленное работает, то вы можете использовать движение мыши для отслеживания времени ожидания.

0 голосов
/ 22 августа 2010

Вместо top.document.title попробуйте top.document.getElementsbyTagName('title')[0] (Предполагается, что top - это некая форма рамки или окна)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...