То, что я пытаюсь сделать, это обновить простой div, чтобы сказать «Обрабатывается ...» перед выполнением сценария с интенсивным использованием процессора (для его запуска требуется 3-12 секунд, без AJAX), затем обновить div, чтобы сказать"Законченный!"когда сделано.
Я вижу, что div никогда не обновляется с помощью «Processing ...».Если я устанавливаю точку останова сразу после этой команды, то текст div обновляется, поэтому я знаю, что синтаксис правильный.Такое же поведение в IE9, FF6, Chrome13.
Даже при обходе jQuery и использовании базового необработанного Javascript я вижу ту же проблему.
Вы могли бы подумать, что это будет простой ответ.Однако, поскольку jQuery .html () и .text () не имеют обработчика обратного вызова, это не вариант.Он также не анимирован, так что нет никаких проблем с манипуляциями.
Вы можете проверить это сами, используя пример кода, который я подготовил ниже, который показывает реализации jQuery и Javascript с 5-секундной высокопроизводительной функцией.Код легко следовать.Когда вы нажимаете кнопку или ссылку, вы никогда не увидите «Обработка ...»
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" ></script>
<script type="text/javascript">
function addSecs(d, s) {return new Date(d.valueOf()+s*1000);}
function doRun() {
document.getElementById('msg').innerHTML = 'Processing JS...';
start = new Date();
end = addSecs(start,5);
do {start = new Date();} while (end-start > 0);
document.getElementById('msg').innerHTML = 'Finished JS';
}
$(function() {
$('button').click(function(){
$('div').text('Processing JQ...');
start = new Date();
end = addSecs(start,5);
do {start = new Date();} while (end-start > 0);
$('div').text('Finished JQ');
});
});
</script>
</head>
<body>
<div id="msg">Not Started</div>
<button>jQuery</button>
<a href="#" onclick="doRun()">javascript</a>
</body>
</html>