私がやろうとしているのは、CPUを集中的に使用するスクリプト(実行に3〜12秒かかり、AJAXなし)を実行する前に、単純なdivを「Processing ...」と更新してから、divを「Finished! 「」それが終わったら。
私が見ているのは、divが「Processing...」で更新されないことです。そのコマンドの直後にブレークポイントを設定すると、divテキストが更新されるので、構文が正しいことがわかります。IE9、FF6、Chrome13でも同じ動作です。
jQueryをバイパスして基本的な生のJavascriptを使用している場合でも、同じ問題が発生します。
あなたはこれが簡単な答えを持っていると思うでしょう。ただし、jQuery .html()と.text()にはコールバックフックがないため、これはオプションではありません。また、アニメーション化されていないため、操作する.queueはありません。
以下で準備したサンプルコードを使用して、これを自分でテストできます。このサンプルコードは、5秒の高CPU関数を使用したjQueryとJavascriptの両方の実装を示しています。コードは簡単に理解できます。ボタンまたはリンクのいずれかをクリックしても、「処理中...」は表示されません。
<!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>