Как стать автором
Обновить

firebug + eval + setTimeout = неопределённоcть в firefox 3

Время на прочтение1 мин
Количество просмотров642
При включенном firebug-e если в коде после установленного setTimeout-a есть функция eval, FF начинает выполнять setTimeout не дожидаясь выполнения всего кода.

При нормальном поведении setTimeout-ы выполняются после того как весь другой выполняемый код будет выполнен. Пробовать выполнитьcя, setTimeout начинает после окончания времени ожидания. Если после окончания времени ожидания на странице что-то выполняется setTimeout дождётся окончания выполнеия и после запуститься.

setTimeout(function(){
	if(window.ik)alert('eval оборвал выполнение кода и выполнился setTimeout');
	else alert('Всё нормально, setTimeout выполнисял после всего');
});
ik=true;
var obj=eval('window');			
ik=false;


В FF 3.0.4, FF 3.0.3 при включенном firebug-e переменная в ik в функции setTimeout будет true во всех других браузерах будет false
Firebug 1.2.1
Для FF 3.1b firebug должен обновиться, без firebug всё ок
Тестовая страница
UPD: Рядовой пользователь конечно firebug не ставит… а у разработчиков судьба такая… мучиться с ошибками:) Выявить эту хрень в коде в котором более 2000 строк… было, мягко говоря, не просто. Надеюсь кому-нибудь, со знанием сей неопределённости, потребуется меньше времени на отладку.
Теги:
Хабы:
Всего голосов 11: ↑9 и ↓2+7
Комментарии14

Публикации