http://alljs.ru/articles/timeout/overview.html
Сообщение от Kolyaj
|
setTimeout(function() {…}, 1); // Ставим минимально возможный интервал
|
Минимально возможный интервал — 0. Код ставится в очередь, и выполнится по окончанию блока
<script>
(или каскада событий и обработчиков событий, в общем, «потока»).
Вот тестовый пример, который работает идентично во всех браузерах, включая престарелый IE6
<a href="javascript:writeLog('click default action')" id="test">Клицк ми!</a>
<pre id="log"></pre>
<script>
setTimeout(function(){
writeLog("Log started"); /* а функция-то еще не определена! */
}, 0)
writeLog = function(str){
document.getElementById('log').innerHTML += str + "<br />";
};
test = document.getElementById("test");
test.onclick = function(){
writeLog('click event handler');
setTimeout(function(){
writeLog('timeout at click');
}, 0)
}
test.onmouseup = function(){
writeLog('mouseup event handler');
setTimeout(function(){
writeLog('timeout at mouseup');
}, 0)
}
</script>
А в IE
setTimeout(…, 1)
рискует превратиться в
setTimeout(…, 18.2)
из-за
квантов таймера.