Клик по элементу иногда не срабатывает с первого раза
Всем привет столкнулся с такой проблемой.
Но для начала о странице. Это динамически обновляющийся лог. Имеем навеху несколько кнопок и несколько чекбоксов. Всё это составляет панельку. Далее, ниже, собственно место, в которое выводится лог. Каждая строка лога дописывается в отдельный <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: не знал в какую ветку форума закинуть тему. Оставил здесь, так как главная проблема в элементах.. Спасибо. |
Где панелька? Почему синхронном - не вижу такого места.
|
deleted
|
Точно, если false то нормальный асинхронный запрос отменяется. Не замечал. Зачем это сделано, в смысле false? И вообще я тут пас - в онкликах не разбираюсь. Там что-то можно посмотреть в консоли? Если условия поведения воспроизводимы, надо смотреть событие сгорает или нет. Как завязан этот GET со всем остальным тоже не ясно.
|
Он должен ждать на ответ, то есть работать синхронно, потому что в ответе приходит номер последней строки, которая потом высылается на сервер. При асинхронном редко, но бывало так, что следующий запрос высылался не получил номера последней строки. А это ошибка
|
Часовой пояс GMT +3, время: 13:34. |