IE deserves more love
…or, at the very least, less hate.
Here we are, on version 28 (or something) of Senff.com, mostly dedicated to front end development, and with the very first article I choose to write something positive about Internet Explorer.
I will make a case for this most hated piece of software in web development because I truly think people are often TOO quick to blame IE for some issues, when it’s just really not always IE’s fault. There are still a lot of developers out there use IE as an excuse to mask their own shortcomings, or as a reason to NOT do a little bit of extra work.
Let me get this straight — I am not an IE enthusiast, let alone a fan. Dealing with IE6′s shortcomings & bugs is not always a fun job, and IE7′s specific bugs can be ridiulously annoying. All IE versions DO have some particular bugs (which browser doesn’t?), but at least Microsoft is trying to improve.
Internet Explorer 6 is a special case. It’s a terrible, terrible browser, but everyone makes mistakes. Microsoft admits that. It’s 11 years old. Then surely it won’t collaborate with today’s code standards! Would you expect a 50-year old TV set to be able to show “THE AVENGERS” in full-color 3D? Or would you expect “BATTLEFIELD 3″ to work on Windows 3.11? Of course not. So let’s not expect today’s web sites to look great on the antique piece of shit browser that is IE6 either. Let’s move on and not keep on bitching how bad it was, is, and always will be.
Right! But there are still some people who DO use it. Look, when even Microsoft wants IE6 dead, you know it’s time to move on and not waste time on making your site IE6-compatible anymore, despite that 2.x% of stubborn users and the 20% Chinese who have a pirated copy of Windows XP. Their loss!
Now, yep, all those versions after IE6 still have a whole load of bugs that we front end developers have to deal with, more than any other browser. And indeed, things would have been so much easier if these bugs weren’t there in the first place. But we’ve known about these bugs for years and years, and we should be used to them by now.
The truth is: those bugs in earlier versions of IE will NOT be patched. Ever. Complaining about it won’t solve it either, and the only way to deal with it (if you really must support those older versions), is to learn how to code around these bugs.
When I see an experienced front end developer say something like “wut no min height in IE?!” or maybe “why the hell does my DIV get a left margin of 50 pixels when I clearly state it should be 25??!?!“, then all I can think is, you’re surprised by this? The fixes for these problems are so easy to apply (without having a significant impact on other browsers), they’re practically common knowledge.
While IE is definitely at fault here (for having the bugs, clearly!), I could make a case that these roadblocks really shouldn’t be any surprise anymore nowadays.
Although old bugs won’t be patched, missing features are being addressed. The most obvious example is, naturally, that IE7 and IE8 don’t support HTML5/CSS3 elements and I think we all know this by now. Yet, every now and then I still see people get all upset about IE completely messing up their sites — then upon checking, it turns out that the site is full of HTML5-specific tags such as <HEADER> and <ARTICLE>, tags that IE simply doesn’t know.
When IE7 came out in 2006, HTML5 and CSS3 were not as “mainstream” as they are now and the browser just didn’t ship with the ability to deal with the (then) under-developed specs. Things are going extremey fast with HTML and CSS nowadays, we can’t expect a 6-year old browser version to magically keep up with today’s trends. Yet some are so quick to point at IE when something goes wrong, that the possibility that there may be something wrong with their own code [being too modern for an old browser] does not even come to mind.
This is where polyfills such as Modernizr and HTML5 Shiv come in; user-developed libraries that enable your older IE versions to deal with newer code. Before you yell at IE butchering your fancy HTML5 site, add a little bit of support first. IE7/IE8 are no time machines, you’ll have to help them understand. That, in essence, is more up to you.
(Yes, Firefox and Chrome do keep updating themselves automatically. But IE7/IE8 have a much older codebase that keeps them from being able to do that.)
“Stupid IE6 doesn’t show my rounded corners!“. Really??
One more issue that pops up a lot, is when someone makes a mistake in their code (happens to the best of us!) and all browsers display it fine, whereas IE doesn’t. This is a valid point of debate: should a browser forgive your code errors, interpret what you were trying to do, and display things like that? Or should a browser definitely NOT ignore any errors and just say “hey wait a second, that code is not OK, I’m gonna stop you right there“? Or somewhere in between and ignore any “invalid” code?
Personally, I’m a strong supporter of the second one, but there’s plenty of people who think that a browser should be intelligent enough to spot a mistake and figure out what the coder was actually trying to type. Problem with that, is that that’s not always that easy.
I mean, it’s pretty clear that when you code:
<img id="main class="align left" src="image.jpg">
…you probably meant to put a closing double quote after main:
<img id="main" class="align left" src="image.jpg">
But what if you typed:
<img class "align left" src="image.jpg">
Who knows for sure what you actually meant! If you want the browser to interpret your mistake and attempt to fix it, you may end up with
<img class="align left" src="image.jpg">
But maybe it will turn it into:
<img align="left" src="image.jpg">
The browser has no way of telling you made just one typo, or two, so it’s impossible to come up with a solution that always works.If you want the browser to ignore the mistake, you would end up with just this:
Possibly, you want your browser to stop right there, to basically tell you that you made a mistake that it can’t fix itself, and you need to fix it first. That would be my personal preference (and is what IE often does, which is the point of the story here), but again, that may be a matter of opinion.
(hey, wouldn’t this be a great browser option? CODE ERRORS: attempt to fix / ignore / stop rendering)
IT’S OUR JOB
All in all, I don’t think IE is a particularly good browser. But IE10 is not bad at all — consider it that Microsoft is trying to correct the mistakes they made before (although, sure, you may think Chrome and Firefox may be better browsers). It’s just such a waste of time to look back at old(er) software and complain that they are not doing what they should do, or what you’re expecting from more modern versions.
Still, making things work in a bunch of browsers, that’s our job. If all browsers would display all our HTML code exactly the same, we’d be out of a job. We’d get out-of-the-box web site creators like Frontpage, where everyone can slap something together and it’ll look great everywhere. Amazing!
That’s a simplistic approach to the situation of course, but it is what us front end developers DO. Cross-browser coding. We’re supposed to break our heads over making things look the same good in the various browsers and its many versions. That’s what we’re good at, that’s why we get paid to do this, and let’s face it – we enjoy doing it.
Imagine how boring things would be if there would be only one browser that we needed to support.
IN CONCLUSION AKA RECAP
Earlier versions of IE are less than perfect. Some of them are utter garbage, even more by today’s standards. But again, these issues will not be fixed by complaining. Know your enemy and learn/accept to deal with the shortcomings they have. IE doesn’t always break your site; sometimes your site breaks IE.
Forget IE6; this is a whole different game and just as much an issue as AOL Explorer, Netscape Navigator or Lynx.
Familiarize yourself with the common bugs and their fixes.
And older versions do not have the features to support current standards. Much like the “old” iPhone 3 will not ever change to be able to shoot video, IE6/7/8 will never change to be able to properly deal with HTML5/CSS3 by itself. Use some tools that make IE able to deal with that at least. They’re out there.
The more you know what to expect, the easier things will be. Avoid situations where you end up saying “Oh crap, now I have to apply all those fixes for IE, oh nooooooo…..“. Some might think that sounds lazy, or even incompetent.
Personally, I’m a lot more impressed by front end developers who don’t consider IE a challenge. Then again, why would anyone want to impress a front end developer who has an “I ♥ IE” image on his site?
(Don’t take things so seriously, people!)