Показать сообщение отдельно
  #4 (permalink)  
Старый 24.09.2010, 12:04
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

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) из-за квантов таймера.
Ответить с цитированием