For more than a decade it’s been the web developer’s most frustrating challenge: different browsers rendering the same stuff in different ways. The problem is that there are no internet police to enforce the laws of the W3C… then again, the W3C has incomplete and ambiguous “laws” so it wouldn’t do much to enforce them. But I digress.
When Microsoft began work on MSIE8 one of their objectives was to make the browser more standards-complaint. All in all, they did a pretty good job. But therein was a problem: pages written with MSIE7 in mind didn’t always render the same way in MSIE8, which meant lots of things might break or look ugly.
Microsoft put a full-court press on advising its clients and customers about this difference and told them to add a meta tag to the header of websites that didn’t render correctly in MSIE8. That tag is the now infamous X-UA-Compatible tag, and it lets you tell MSIE8 that it should display the page as if it were MSIE7 (why they didn’t go all the way back to MSIE6, I don’t know).
So, rather than having corporate web developers go and “fix” their pages to render correctly, Microsoft said “just add this tag to your header and you’re done.” Ugly.
We all had to write around MSIE7 when it came out, now we have to write around MSIE8, too. I’ve never had to rewrite a page for Firefox or Safari version “n + 1”, why do I have to with MSIE… all the time.
What they should have done
Rather than (or in addition to) adding the X-UA-Compatible feature into MSIE8, Microsoft should have pushed an update to MSIE6 and MSIE7 to enable MSIE8 rendering using an X-UA-Compatible meta-tag. Yes, this would require significant, work, but the foundation was laid with MSIE8, why not backdate it?
What would that have accomplished?
By adding the X-UA-Compatible tag to prior versions of MSIE, Microsoft would have allowed developers to write code once for MSIE8, and have it work in MSIE6, 7, and 8. Sweet, right?
Instead, why devote more time to write for MSIE8, when you already have to write for MSIE6 and MSIE7, when you can just add a tag and have MSIE8 think it’s MSIE7?