David Emery Online

Hi there, I’m David. This is my website. I work in music for Apple. You can find out a bit more about me here. On occasion I’ve been known to write a thing or two. Please drop me a line and say hello. Views mine not my employers.

Signup to receive the latest articles from de-online in your inbox:

Standard storm

22 January 2008

First read this (although you probably have already):

Beyond DOCTYPE: Web Standards, Forward Compatibility, and IE8

Then take a look at these:

Broken (If you only read one of these, make it this one)
From Switches to Targets: A Standardista’s Journey
Has Internet Explorer Just Shot Itself in the Foot?
Predicting the Past
Not your father’s standards switch
The versioning switch is not a browser detect
Code Happy
Best Standards Support
In defense of version targeting
Standards mode is the new quirks mode
The Internet Explorer lock-in
META HTTP-EQUIV=”X-BALL-CHAIN”
Who loses out to X-UA-Compatible?
IE8 and the future of the web
Versioning, Compatibility and Standards (from the Safari/WebKit devs)

Needless to say I’m not sure if this concept of version targeting has gone down too well.

I’m firmly on the side of those saying this is a bad idea. It strikes me that this is Microsoft trying to push something that solves a problem specific to them (namely that IE6 was so bad that when IE7 came out lots of things broke) onto the shoulders of web developers. While it’s not particularly pragmatic to say, I think this is really not our problem and the proposed solution has all sorts of downsides; it breaks the concept of progressive enhancement, bloats rendering engines and slows the adoption of new html/css features in the IE userbase.

I also have the feeling that like the the strict doctype before it, in practice this won’t work anyway. Like all good developers, Microsoft are proposing a loophole in the form of setting the X-UA-Compatible tag to ‘IE=edge’, which means you just get the latest version of the IE engine (like you would right now). I can’t see anyone not using this, outside the Microsoft-only devs that got pissed off with IE7, so the whole concept becomes a bit of a red herring. In fact, one of the ways that this could be improved would be if it defaulted to this setting, so the default behaviour isn’t being changed – as Jeremy points out, it’s crazy that unless you tell IE8 to behave like IE8, it’ll behave like IE7; surely that’s not the default behaviour we want?

All that said, there is the kernel of a problem trying to be solved here; namely how to write CSS code (and we are talking just CSS, not HTML, as this discussion is all about presentation) that doesn’t break when newer browsers come out.

Here’s what I’m thinking would be a good way of fixing it: Firstly, with the release of IE8 bring in either a new doctype (‘Standard’?) or a meta tag that announces that this page is expecting a standard compliant renderer. IE8 apparently passes the ACID2 test so should hopefully be on par with the other major browsers, and this flag will prevent IE8 ‘breaking the web’ again from Microsoft’s point of view.

Next, we need to have some way going forward of coping with new advancements to CSS without effecting older browsers. I see two ways of tackling this (possibly in combination): 1) Add a ‘version’ attribute to the CSS link tag, and then browsers can alter their rendering based on this (which is a similar solution to the X-UA-Compatible one, but seems a more appropriate place to do it). 2) Add conditionals to CSS that can detect what features a browser has available. I see this second one working roughly like this:


/* if( text-shadow ) {
p {
text-shadow: 1px 1px 2px black;
color: white;
}
} */

You could then supply different CSS to browsers based on whether they supported a specific feature, and using the cascade supply ones that didn’t something else. I’ve wrapped it in comment tags so that any older browser that doesn’t understand the conditional will just ignore it; this is quite purposely like the IE-specific conditional comments tags, which I think are also a good solution to this problem (which already exist!) and would be good to have adopted by the other browser manufacturers.

Here’s hoping that this loud reaction will give Microsoft some pause in rolling this out; they look like they’re moving in the right direction with IE8 so I hope that don’t screw up on an issue like this.