Microsoft Confirms IE8 Has 3 Render Modes
The IEBlog has some info about IE8. It will be super-duper standards-compliant. If that page happens to have a special IE tag added to it.
Back in the day, there was this great idea to use the DOCTYPE to determine if the author actually knew their way around HTML, or if they were clueless. The idea was that the ones that used perfect code would have a proper DOCTYPE, so the browser would render the page in Standards mode. The ones that didn’t have a valid DOCTYPE (i.e. just “HTML”) would be rendered in Quirks mode, where the browser would be more lenient. Simple, effective plan.
However, in an effort to be standards-compliant, HTML generators and well-meaning people started using proper DOCTYPEs without using standards-compliant code. They told the browser to render it one way, but used code that would render a different way. In short, the pages are incorrect. Think of it as telling someone to use “Correct Math” mode instead of “One-Less Math” mode. When you say 3, it means 3. In One-Less mode, saying 3 meant 2. People put in the DOCTYPE for Correct Math mode, but still left One-Less code in there. That made things look screwy.
With IE8, Microsoft is continuing to improve standards support. It’s been reported that IE8 can even properly render ACID2. However, they’ve chosen to undo all their progress by having IE8 default to the old rendering engine, unless you add a specific meta tag to the header of your page. In order to get IE8 to use its most standards-compliant mode, you have to add a non-standard tag. Since there are so many pages that have the Standards mode DOCTYPE, but aren’t really standards-compliant (i.e. poorly coded sites), they’re cutting current Standards support in favor of old broken code.
Instead of forcing authors of old broken code to fix their stuff, Microsoft is forcing authors of new unbroken code to “fix” their stuff. They’re doing so by claiming that the DOCTYPE system is broken, and implementing a new version of the DOCTYPE system which will suffer the exact same issues when the next version comes out. The root cause of this issue is bad code and their system promotes it rather than doing anything to discourage it.