I can't figure it out.
Is it because the people making the browsers don't care? Is it because we, as developers, already write hack code to get around things that don't work in browser X and Y?
I can't figure it out.
Is it because the people making the browsers don't care? Is it because we, as developers, already write hack code to get around things that don't work in browser X and Y?
Perhaps it's because browsers existed before the w3c standards and are not about to rewrite from scratch just to conform to ever changing requirements. I think they do a good job implementing new features incrementally.
Dilbert wants to join the industry consortium promoting web services standards.
Flashy - http://www.dilbert.com/strips/comic/2005-12-31/
Less Flashy - http://www.dilbert.com/fast/2005-12-31/
There was the Great Browser War, which was eventually won by the Internet Explorer, where vendors deliberately implemented features that weren't compatible with other browsers to have those websites with those small badges Designed for Netscape 4.5.
By being incompatible and having unique features Microsoft won the browser war, at least for several years.
Have you ever tried to use complex CSS in a fairly standard-compatible browser? It's hard to create anything because the standards are complicated. I guess the implementation is even more complicated.
Many websites were designed with wrong HTML implementations in mind (see my first section). If all browsers just implemented 100% compatible rendering engines, many websites would break. They are trying to gradually get it right.
To "defend" IE (which notably has the worse standards support), they state that it is to maintain backwards compatiblity with the last 100-million web sites that expect the "old" behavior in IE.
The good news is that in IE8, you can Expect better standards based rendering and script execution by default, if your page is set up correctly.
What browsers are you talking about? WebKit and Opera's engine both have fairly good support for W3C standards (for example, both passed Acid3 a while back). Firefox is a bit lacking in some areas, but is still pretty good. IE...well, IE is so popular that Microsoft doesn't really care, and Microsoft isn't know for playing nice with other people anyway.
Of course, even the most standards-compliant browsers still allow a bit of looseness in their parsing of web markup, but that's mostly because, historically, web designers/developers haven't worked really hard to be standards-compliant, either.
I hate to be the guy that links a Joel article, but this article is one of the best answers to the question.
http://www.joelonsoftware.com/items/2008/03/17.html
Unfortunately it is so long that by the time you read it and think wow that was an amazing article you will forget how you got there and who you were supposed to upmod. : )
Many edge cases in the specs are unspecified/underspecified and browsers end up implementing them differently (e.g. HTML failed to specify error recovery until v5).
Large areas of "standards" are de-facto standards that are leftovers from browser wars and don't have proper specifications – if any (e.g. DOM0)
Some specs are simply hard to understand and hard to implement (e.g. CSS visual formatting model – details of anonymous boxes, collapsed margins and inline formatting contexts might make you dizzy)
Some developers don't care and let their dominating browser languish for half of WWW's lifetime… :)
It's more important for a browser vendor to have perfect compatibility with existing pages rather than implement new features/standards that won't give them competetive advantage anytime soon. If standards and websites disagree, websites always win (that's why W3C had to adopt HTML5 to avoid becoming irrelevant).
It's just part of having a standard that all vendors won't support it. The browser developers, we might guess, feel more pressure to add or enhance features for the users browsing the web rather than refactoring their parsers and layout code to be more conformant.
Basically, it seems 'good enough', since we all know how to jump through the hoops to get around it.
One of the problems is remaining backwards compliant with old sites. For example, many standards-compliant browsers won't display sites correctly if they were made for IE6 and before. To compensate, the more popular browsers (IE7/8 and Firefox 3) try to bridge the cap - retain the ability to display as much of the web as possible (even if the page is noncompliant), while also coming close to the W3C standards.
I suspect that this will become a non-issue within a few years.
ACutally most browsers are pretty good in supporting the Open Standards, including some of the oldest browsers in the world like Opera (which is like 15 years old) and FireFox which is to some extend based on Netscape which is like also from 1993 or something I think.
The only ones having "problems with w3c standards" are Microsoft, and frankly why they are "having so much problems" I think you should ask them about. But my guess is that they don't see any "money" in supporting standards since that would make it easier to create portable applications and such fostering competition and so on...
While that has been said, there is currently a massiv campaign going on in Norway to permanently KILL IE6 of the face of the earth, read up some of the highlights here; http://ra-ajax.org/ground-zero-in-the-ongoing-war-against-ie6.blog
And this one is my favorite ;)
If the browsers adhered to the standards fully then most websites would not be accessible. There must be a compromise.