Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.10.2014, 15:10
Интересующийся
Отправить личное сообщение для Kimtom Посмотреть профиль Найти все сообщения от Kimtom
 
Регистрация: 09.03.2011
Сообщений: 18

Клик по элементу иногда не срабатывает с первого раза
Всем привет столкнулся с такой проблемой.
Но для начала о странице. Это динамически обновляющийся лог. Имеем навеху несколько кнопок и несколько чекбоксов. Всё это составляет панельку. Далее, ниже, собственно место, в которое выводится лог. Каждая строка лога дописывается в отдельный <p> и целая структура имеет следующий вид:
<div class="content">
    <div id="logData">
        <p>строка лога</p>
        <p>строка лога</p>
        <p>строка лога</p>
        <p>строка лога</p>
        .... //и так далее
    </div>
</div>

Добавление строк реализуется с помощью AJAX в режиме синхронном. В целом, функция, которая отвечает за добавление записей выглядит так (некоторые ненужные строки удалены, что бы было легче читать):

function getData( address, lastLineId ) {
    xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function(){
        if (xhttp.readyState == 4 && xhttp.status == 200) {
            ajRespCount = ajaxResponce.length;
            if ( ajRespCount > 0 ) {
                for (var i=0; i < ajRespCount; i++) {
                    var currentRecord = ajaxResponce[i];
                    var currDoc = parseLine(currentRecord.text);
                    // функция parseLine возвращает строку типа <p class..>текст строки лога....</p>
                    document.getElementById('logData').appendChild( currDoc );
                    
                }
                checkLimit();
                scrollToBot();
            }
        }
    }
    xhttp.open('GET', address + lastLineId, false);
    xhttp.send();
}

функция parseLine функция parseLine возвращает строку типа <p class..>текст строки лога....</p>

И всё, вроде бы, хорошо, всё работает.
НО: редко, но бывает такое, что кнопки и чекбоксы верхней панельки не срабатывают с первого раза. Кликаешь, ничего не происходит. Кликаешь второй раз и всё в порядке. Подозреваю, что это из-за того, что добавление строки лога блокирует интерфейс на доли секунды. И вот вопрос: как от этого избавиться? И можно ли.. Иногда это мешает. Что не есть хорошо.
PS: используется только чистый javascript. Возможность использования библиотек или фреймворков исключена.
PSS: не знал в какую ветку форума закинуть тему. Оставил здесь, так как главная проблема в элементах..

Спасибо.

Последний раз редактировалось Kimtom, 12.10.2014 в 15:40.
Ответить с цитированием
  #2 (permalink)  
Старый 12.10.2014, 16:19
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Где панелька? Почему синхронном - не вижу такого места.
Ответить с цитированием
  #3 (permalink)  
Старый 12.10.2014, 16:32
Интересующийся
Отправить личное сообщение для Kimtom Посмотреть профиль Найти все сообщения от Kimtom
 
Регистрация: 09.03.2011
Сообщений: 18

deleted

Последний раз редактировалось Kimtom, 13.10.2014 в 00:52.
Ответить с цитированием
  #4 (permalink)  
Старый 12.10.2014, 17:45
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Точно, если false то нормальный асинхронный запрос отменяется. Не замечал. Зачем это сделано, в смысле false? И вообще я тут пас - в онкликах не разбираюсь. Там что-то можно посмотреть в консоли? Если условия поведения воспроизводимы, надо смотреть событие сгорает или нет. Как завязан этот GET со всем остальным тоже не ясно.
Ответить с цитированием
  #5 (permalink)  
Старый 12.10.2014, 18:02
Интересующийся
Отправить личное сообщение для Kimtom Посмотреть профиль Найти все сообщения от Kimtom
 
Регистрация: 09.03.2011
Сообщений: 18

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jquery событие change не срабатывает с первого раза. daneyeah Общие вопросы Javascript 2 13.10.2014 14:06
onclick срабатывает со 2 раза в ie djonA Общие вопросы Javascript 19 25.03.2013 01:07
Скрипт не срабатывает с первого раза Mateus jQuery 3 14.12.2012 12:35
Onchange в attachevent срабатывает не с первого раза. platedz Internet Explorer 17 19.08.2012 08:34
click срабатывает со второго раза jsuse jQuery 2 03.12.2011 03:44