Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Простой alert внутри обработчика меняет работоспособность функции. (https://javascript.ru/forum/events/47707-prostojj-alert-vnutri-obrabotchika-menyaet-rabotosposobnost-funkcii.html)

zinaas 04.06.2014 13:38

Простой alert внутри обработчика меняет работоспособность функции.
 
Hi All!
Начал читать книгу К.Даре и Б.Бринзаре и срезался на первом же примере.
есть функция - обработчик XMLHttpRequest::onreadystatechange:
function handleServerResponse()
{
//alert("Handling..");
if (xmlHttp.readyState==4)
{
if (xmlHttp.status==200)
{
xmlResponse=xmlHttp.responseXML;
xmlDocumentElement=xmlResponse.documentElement;
hellomessage = xmlDocumentElement.firstChild.data;
document.getElementById("divMessage").innerHTML = '<i>'+hellomessage+'<i>';
setTimeout('process()',1000);
}
else
{
alert('Нет ответа от сервера'+xmlHttp.statusText);
}
}
}

Так вот, если я оставлю алерт в начале функции - все работает как задумано - с определенной периодичностью обработчик запускается снова и снова. Как только алерт убираю - все, функция работает только один раз.
Подскажите, куда смотреть, как ловить?

Андрей.

WorM32 04.06.2014 15:09

Когда алерт стоит вначале, сколько раз он показывается? 4?)

zinaas 05.06.2014 14:30

Перепроверил еще раз:
Если алерт стоит,
- firefox показывает его в цикле (бесконечном) как задумано (надписи меняет)
- chrome не запускает функцию ни разу

Если алерт убрать,
- firefox и chrome не запускают функцию ни разу (нет обновления надписи)

Вот вызывающая обработчик функция из примера:
function process()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState==0)
{
name=encodeURIComponent(document.getElementById(|m yName").value);
xmlHttp.open("GET", "quickstart.php?name="+name, true);
xmlHttp.onreadystatechange=handleServerResponse();
xmlHttp.send(null); //пробовал менять местами со строчкой выше - результата нет
}
else
{
setTimeout("process()",1000);
}
}//func


Часовой пояс GMT +3, время: 22:38.