Подгрузка новых сообщений. Глюки...

~AquaZ~

Новичок
Привет. Есть чат http://aquadc.net/ (извините за рекламу, просто тут можно потестить). Чтобы не сжигать кучу траффика, я подгружаю только последние сообщения, формат - JSON. JS-код, который отвечает за подгрузку (использую jQuery):
Код:
function UpdChat()
{
    //  (  здесь был код, ответственный за частоту обновления чата  )

    $.getJSON('/misc/msgs.php', {"fromtime":fromtime}, function(data){ // fromtime - время, начиная с которого нужны сообщения
        fromtime = data.time; // обновляем это значение из полученых данных
        if ($('#chat').is(':not(:empty)') && wFocus == 0)
            newmsgs += data.msgs.length; //отвечает за мигание строки адреса при появлении новых сообщений. Если окно чата пустое (грузит впервые), то не мигаем
        $.each(data.msgs, function(key,val){ // перебор массива с сообщениями
            if (val[0] == 0) // то что дальше не должно влиять на работу...
                val[0] = 'reg'; // если надо - могу объяснить, что это всё такое...
            if (val[0] == 1)
                val[0] = 'vip';
            if (val[0] == 2)
                val[0] = 'moder';
            if (val[0] == 3)
                val[0] = 'admin';
            $('#chat').append('<div class='+val[0]+'><a href="#" onClick="user('+val[3]+'); return false;">'+val[1]+'</a>: <span>'+val[2]+'</span><div>' + val[4] + '</div></div>');
        });
    });
    if ($.cookie("autoscroll") == 1) // автоскролл
    {
        $('#chat').animate({scrollTop:9999999}, 500);
    }
    setTimeout(UpdChat, ChtRfr); // обновление чата с заданной частотой
}
Иногда возникают странные глюки. Порой сообщения не показываются, хотя я догадываюсь о природе этого, а иногда - дублируются по куче раз. В чём дело?
 

Andreika

"PHP for nubies" reader
дело в скорости ответа сервера? setTimeout(UpdChat, ChtRfr); запускает таймер сразу и вероятно он успевает дотикать быстрее, чем прийдет ответ с предыдущего запроса => снова идет запрос с тем же fromtime
 

~AquaZ~

Новичок
Теперь другой глюк. В Опере (на правах плавающего блока) время (справа от сообщения) уплывает вниз. В родном и близком к душе Хроме - всё ок.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
найми нормального фронт-девелопера
проблема у тебя сугубо практическая и сводится к знанию особенностей браузеров
 
Сверху