firebug + eval + setTimeout = неопределённоcть в firefox 3
При включенном 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 строк… было, мягко говоря, не просто. Надеюсь кому-нибудь, со знанием сей неопределённости, потребуется меньше времени на отладку.