Почему HourGlass не работает с синхронным AJAX-запросом в Google Chrome? - PullRequest
1 голос
/ 29 мая 2009

Я выполняю функцию, в которой сначала я делаю курсор в состоянии ожидания (песочные часы), а затем отправляю синхронный запрос AJAX. После получения ответа я делаю курсор в состояние по умолчанию.

Действительный кодекс это ..

// тестирует настройки smtp функция TestSettings () { var buttonparams = new Object ();

buttonparams.IsCommandButton = true;
buttonparams.ButtonId = "testsettings";
buttonparams.ButtonText = "Sending Test Mail...";
buttonparams.ButtonOrigText = "Test Settings";

if(buttonparams.IsCommandButton == true)
    HandleButtonStatus(true, buttonparams);

var request = function()
{
    var ret = SendForm(buttonparams);

    alert(ret);

}
window.setTimeout(request, 0);  

}

функция SendForm (pButtonParams) { вар http; var formdata;

http = yXMLHttpRequest();

http.open("POST", "./", false);
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
http.setRequestHeader("Req-Type", "ajax");
formdata = xEncodePair("_object", "PrefMgr")+ "&";
formdata += xEncodePair("_action", "SmtpTest")+ "&";
formdata += GetEncodedFormData();   

http.send(formdata);

if(http.status == 200)
{   
    if(pButtonParams.IsCommandButton == true)
        HandleButtonStatus(false, pButtonParams);

    return (http.responseText);
}   
else
{

    return ("Error " + http.status + ": " + http.statusText);   
}   

}

функция HandleButtonStatus (pIsButtonStatusChange, pButtonParams) { кнопка var = yById (pButtonParams.ButtonId);

if(pIsButtonStatusChange)
{
        document.body.style.cursor = "wait";
    button.value = pButtonParams.ButtonText;
    button.disabled = true;

}
else
{
    document.body.style.cursor = "default";
    button.disabled = false;
    button.value = pButtonParams.ButtonOrigText;
}

}

1 Ответ

1 голос
/ 29 мая 2009

Попробуйте назначить:

var st = document.body.style;

и затем обратитесь к st в обеих функциях. Это может быть проблема с областью в функции обратного вызова AJAX.

РЕДАКТИРОВАТЬ: Используйте функцию обратного вызова, чтобы восстановить форму курсора. Не забудьте сделать то же самое в случае сбоя вызова AJAX.

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