Wednesday, November 02, 2011

My hate of Internet Explorer knows no bounds

I`m not the only one that has issues with Internet Explorer. Any web designer will tell you that IE sucks. It's to browsers as French is to languages: bloated, complex, and enough exceptions to fill a book.

But in the last 3 days, I've been fixing one problem after another, because different versions of IE have different quirks - but in general, every one of them is a bitch to troubleshoot when you don't know exactly what you're dealing with.

On Monday, I spend hours tracing down an issue that was making IE8 crash its tab when I opened the online html documentation I'm maintaining. Every single other browser (and every other version of IE) worked perfectly well, no error messages, no warnings. But IE8 was being a dumbass and quitting for no apparent reason. After screwing around in the javascript, the frames, the HTML, I chanced upon the fact of removing my jquery import and my javascript code in general, and suddenly it worked... A google search revealed that, specifically, [ IE8 + jQuery 1.6.2 + CSS background: url(something); + a page refresh ]  caused the crash, because a single line of code that "fixed" an IE8 bug related to CSS backgrounds was removed in error. The solution was to update jQuery to the latest version, 1.6.4, which restored their workaround to the bug. IE8 = bitch.

On Tuesday, a colleague of mine reported that IE7 was freezing and taking 100% CPU on one core. Again, Firefox, Chrome and every other version of IE had no issues at all. Why was this happening? Well, I recently added tiny bit of code that detected when the browser window was resized, and re-centered buttons on the screen (absolute positionning being a bitch of its own). In IE7 specifically, whenever an element changes on the page, it triggers the resize event. So, it was running into an infinite loop where it would resize, re-center, trigger a resize, and start all over again. To fix this, I had to add a small jquery plugin called "smartresize" which "debounced" the refresh function with a timeout. IE7 = bitch.

And today, another issue reared its ugly head: In IE9, a client would click on a "Send Feedback" link I provide, enter his name, email and a message, click on Submit... And the dialog would just stupidly sit there. And again, every other browser and version of IE I tested worked perfectly well, no issue whatsoever. The cause? I was sending an AJAX request through POST and receiving a JSON response. Now, something in IE9 (still not sure what) bugs out, thinks it should be receiving XML, sees JSON, and thinks "oh this is a mistake". Instead of triggering the jquery success: function, it triggers error:. Because I had already spend half my week fixing IE's stupidities, I resorted to a dumb workaround just to get rid of it: I put the contents of my success: function in my error: function (which is never triggered and didn't even exist before now anyway). IE9 = bitch.

Now, if you're a web designer you may think part of this is my fault - not testing properly in all versions, not knowing the quirks by heart, lacking troubleshooting abilities. But in all honesty, if I didn't have to support IE (if 40% of our users weren't on IE8), I would have spent the last 3 days doing more constructive things like, I don't know, updating our software documentation or writing FAQs.

Question to you: how many of your head banging sessions were caused specifically by Internet Explorer?

No comments:

Post a Comment