... No, Internet Explorer did not handle it properly

You know what? I am sick, just sick ... no, wait, scratch that ... I'm sick and tired of hearing it.

This page looks perfect in Internet Explorer but when I load it in <insert name of browser here> it gets it all wrong. What is wrong with <insert name of browser here>? Stupid <insert name of browser here> with its useless <Choose; JavaScript|HTML|CSS> support.

Rubbish, rubbish, and absolute rubbish. But why do these people think this way? The problem is with the way that the pages are made, and often it is the author who makes the comments about the other browsers being wrong. Well, they make a page. And like most people, they test it in Internet Explorer on Windows (currently the most popular browser in use). It doesn't look quite right. This is usually due to a rendering or scripting bug in IE. IE has bugs? Sure, of course it does. Every browser has bugs. IE has got more than most people realise, and that's ignoring the security bugs (this article does not deal with those).

In fact many of its rendering bugs are so well known, that tutorials and cut-and-paste code everywhere contains fixes for it that people copy and use without even the slightest idea that it is wrong, or that it is there to fix yet another IE bug. Of course, the downside to this is that when one of these 'fixes' produces unexpected results in another browser that the original author did not bother to test in, the user usually has no idea what caused it, and often ends up blaming the browser.

So they change their page to make it look better in IE. That doesn't work quite right, so they change it again, and they break their code, and they break it more and more until IE gets it perfect. Voilá!

Then they try it in something else, typically Mozilla, for example. It looks as bad as you might expect. Stupid Mozilla. Oh, no, hang on. Mozilla doesn't make mistakes. Must be something else. So they break it again (occasionally throwing in a few styles that they don't really understand properly) until it looks right in Mozilla and IE. Of course, it's still not right, but it looks right in Mozilla, because with the particular combination of invalid code, it looks like it was supposed to. But <insert name of other browser here> doesn't handle this invalid code the same way. Why should it? There is no documentation saying how this invalid page code should be handled. It is invalid. Each browser has its own way of handling it, and it tries to do its best to deal with it in a way that makes it produce what it considers to be the best results.

All too often, they also employ CSS hacks, using one CSS parsing mistake to fix another, believing they know exactly how each browser is going to deal with it (or not caring). They ignore the fact that as browsers are created or fixed, their response to these hacks may change, where one responce is fixed but another isn't, or a new browser emerges that doesn't suffer from the original bug, but does incorrectly parse the hack. All this based on the assumption that they will be there to fix it when this happens, and that they will actually remember every hack they used and why. Such a ridiculous way to do things, but even a site for a certain supposedly modern, standards based browser contains over 20 hacked declarations (nearly quarter of the total CSS) for 6 separate browsers. This ignores the fact that these misfire and produce the wrong results in another major browser, simply because it treats them correctly.

Or maybe it is a script that is not working (usually because they do not know how to correctly do an object or support detect). So they detect Mozilla and send it proper code (usually, they also catch Safari here, since to them, it looks just like Mozilla). Most of the time, it is this offending bit of code:
var w3c = document.getElementById && !document.all;
var ie = document.all;

Rubbish! IE is not the only browser to support document.all. It's because of old DHTML scripting that alternative browsers like Opera and Konqueror and ICEbrowser were forced to add document.all support. But they are not IE. And for the most part, they do things properly. So when these coders throw something intended for IE only in there, these other browsers have no idea what to do with it and they fail miserably. These browsers also try to add support for the Microsoft JScript syntax, but there are so many differences (mistakes, extensions, deliberate differences), it is impossible to keep up with all of them.

Microsoft love this attitude. Their browser has such a large market share that people are forced to make pages work in it. Other browsers don't make these mistakes, but people blame them anyway. They end up recommending IE, and IE's dominance gets enforced, and with it, the Windows Operating system that it runs on.

Conspiracy theorists have suggested that this is because if browsers become too good, people will make web applications instead of desktop programs. If they were written using syntax that worked in all browsers, they would no longer be tied to using one operating system. Microsoft Windows would no longer be needed. Take GMail for example. The longer Microsoft can hold things like this off, the better it is for them. Of course, it could just be that now that they dominate the market, they have got lazy. Or maybe it is that their bloated, broken code is now so unmanageably difficult for even themselves to understand and debug, that they have given up on the idea of fixing it ... time will tell.

So why should we care? Because what people don't seem to realise is that if IE did things the same way as the other browsers, it would actually make web development much easier. Page code would be much cleaner and less bloated, more accessible. They would take less time to write, and in most cases would be cross browser compatible, usually without the need for hacks or detects. Web pages would be more likely to just work, and it would cost significantly less to make them.

Really? Yes. IE holds back the web by not supporting standards properly. I've heard all the arguments about "standards limit flexibility|innovation". But that is simply not true. The standards are set to be extremely flexible, and are added to ensure that progression is possible without causing problems. IE cannot even render this page correctly. For no good reason, the second blockquote is allowed to float over the floating list. And as a separate issue, the shadowed page effect also does not work, because IE seems to think that the HTML tag does not exist. That is actually a separate issue, which I will cover later. But instead of whining at you about it, I will show you what I mean.

This article is not about bugs. It is about blatant decisions not to support standards. I do not mind if browsers do not support things yet, as long as they are still trying. What I object to is people deciding that they will not bother to advance their support, for whatever reason, but still insist on trying to push their product as being the right browser to use. The web is supposed to be a community where people share information, not a playground where the bully beats up the other children, just because they try to do well. Sorry about that. That's enough analogies.

Oops ... Didn't that work? Oh dear. Guess you'd better click here instead.

Don't click this link unless you want to be banned from our site.