When firebug-e is enabled, if the code after the setTimeout-a is set to the eval function, FF starts executing setTimeout without waiting for the entire code to be executed.
Under normal behavior, setTimeouts are executed after all other executable code is executed. To try, setTimeout starts after a timeout. If after the timeout on the page something is done, setTimeout will wait until the end of the execution and then start.
setTimeout (function () {
if (window.ik) alert ('eval interrupted the execution of the code and executed setTimeout');
else alert ('Everything is fine, setTimeout ran after all');
});
ik = true;
var obj = eval ('window');
ik = false;
In FF 3.0.4, FF 3.0.3 with firebug-e enabled, the variable in ik in the setTimeout function will be true in all other browsers will be false
Firebug 1.2.1
For FF 3.1b, firebug should be updated, without firebug everything is ok
Test pageUPD: An ordinary user of course firebug does not set ... and developers have such a fate ... to suffer with errors :) To reveal this crap in a code in which there are more than 2000 lines ... it was, to put it mildly, not easy. I hope someone, with knowledge of this uncertainty, will take less time to debug.