From: Jakub Narebski Date: Tue, 08 Dec 2009 22:24:48 GMT Subject: Re: PATCH/RFC] gitweb.js: Workaround for IE8 bug Message-ID: <200912082324.49825.jnareb@gmail.com> In-Reply-To: <1260309382.5658.41.camel@swboyd-laptop> On Tue, 8 Dec 2009, Stephen Boyd wrote: > On Tue, 2009-12-08 at 17:29 +0100, Jakub Narebski wrote: > > > > Does the following fixes the issue for IE8 for you (it works for me)? > > > > Yes, there is no longer an error but IE8 still locks up and takes about > 30 seconds. It doesn't seem to be any more responsive. Isn't putting the > error in a try-catch just papering over the issue? Well, I wrote it is *workaround* for IE8 bug, didn't I? There are actually two separate issues. First is 'blame_incremental' freezing browser (making it non responsive), second is proper solution to this bug. The problem with 'blame_incremental' freezing is that JavaScript is single-threaded, and that modifying DOM is not lightweight. gitweb.js should then use technique described in http://www.nczonline.net/blog/2009/08/11/timed-array-processing-in-javascript/ to avoid freezing browser, and perhaps also some technique to avoid reflowing (if possible). The proper solution for IE8 bug would be to use 'progress', 'error' and 'load' events of XHR 2.0 (XMLHttpRequest specification level 2) if they are available, instead of mucking with underspecified 'readystatechange' event from XHR 1.0 and timer. But it is a more complicated solution. -- Jakub Narebski Poland