Я занимаюсь разработкой веб-приложения, которое должно выполнять некоторую обработку, сохраняя при этом информацию на экране. Очевидно, что это лучше всего подходит для AJAX, который я использую. Однако, до начала запроса AJAX, я делаю несколько визуальных изменений через Javascript. В частности:Internet Explorer не выполняет Javascript в порядке
document.getElementById('calc').innerHTML = 'Calculating...'; document.getElementById('calc').disabled = true;
я затем, чтобы вызвать сервлет с помощью AJAX.
Это прекрасно работает в Firefox. Однако в Internet Explorer (версия 8) визуальные изменения никогда не вступают в силу. Приложение просто сидит там минут или два, пока обработка AJAX не будет выполнена. Кажется, что код AJAX выполняется до изменения страницы, но я не знаю, почему это было бы.
Любая помощь будет принята с благодарностью.
EDIT: Вот мои лучшие усилия по Короткому, самодостаточные, Correct, пример
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<script>
var inEdit = 0;
var calcCurrent = false;
function recalc() {
var xmlhttp=new XMLHttpRequest();
if (xmlhttp==null)
{
var tmp = "Your browser does not support XML! ";
tmp += "Please contact your Technical Support division for information on how to upgrade.";
alert(tmp);
}
else
{
document.getElementById('calc').innerHTML = 'Calculating...';
document.getElementById('calc').disabled = true;
var url = "http://www.nzherald.co.nz/";
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
if (xmlhttp.responseText.indexOf("Success")>=0) {
alert(xmlhttp.responseText);
}
else
alert(xmlhttp.responseText);
document.getElementById('calc').value = 'Recalculate';
document.getElementById('calc').disabled = false;
}
}
</script>
</head>
<body>
<a id='calc' class='Button' href="javascript:recalc()" >Recalculate</a>
</body>
</html>
Единственный пример проблемы с этим состоит в том, что этот URL возвращает почти мгновенно. В моем приложении это указывает на страницу, которая обрабатывает базу данных около минуты, и поэтому проблема намного более очевидна.
Какой у вас элемент 'calc'? Он может не поддерживать 'innerHTML' в IE8 – Phil
, убедитесь, что в javascript не указаны какие-либо инструкции console.log, или IE может не запускать код после них. Это будет, если вы откроете инструменты разработчика во время его запуска. Если это проблема – rncrtr
Больше кода будет оценено. – j08691