Quixe IE issue

I’ve been working with Quixe a bit for my WIP as it approaches beta. It’s awesome, by the way. Looks great, works great! Performance under modern browsers (Firefox, Chrome, and IE8) is pretty good – not what you’d get with a dedicated interpreter, of course, but decently responsive. IE7 and IE6 are ridiculously slow – to the point that I’m considering putting in detection code into the page to wave the user off if they’re using those browsers.

I’m having a problem in the otherwise-snappy IE8, though, that’s due to the stupid way Microsoft configured their long-running script termination message. It could probably be fixed with some changes to Quixe, but I’m not a skilled JS developer so I don’t know how to do it myself.

Since IE4, MS has had a registry setting that controls how many Javascript statements they’ll let you run before throwing the “slow script” messagebox. This means that for slow, old comps running IE7, the script might run (and appear to hang) for 30+ seconds before hitting the statement limit and getting the messagebox, but it also means that if I run IE8 on a Core i7 machine I can get this messagebox in 1-2 seconds, which seems ridiculous. It’s totally unscalable – effectively, beyond a certain level of complexity an IE user will always get this messagebox no matter how efficient their JS engine is and how fast their computer is! The default statement limit is 5,000,000, I believe.

The limit can be adjusted in the registry, but that’s hardly reasonable to require users to change. Another tactic involves releasing control back to the browser during long operations, a la this article: http://www.picnet.com.au/blogs/Guido/post/2010/03/04/How-to-prevent-Stop-running-this-script-message-in-browsers.aspx.

I think with a modification along these lines in Quixe, IE8 will be quite usable alongside Firefox and Chrome (and I assume Opera and Safari – haven’t tested them yet). Without it, IE8 is just unviable in general for works beyond a certain level of complexity.