Vitavonni

Sun, 18 Dec 2005

XHTML and CSS compatible workarounds for MSIE bugs

A long time, the common way of working around MSIE CSS bugs was to exploit parser bugs and missing features in it's CSS parser.

Recently I read about a cleaner approach; I tested it recently and it seems to work quite well. Judging from the W3C validator, it's compatible with XHTML, too. It's nor perfect, but it probably is the best we can do currently. (And definitely cleaner than the parser-bug-exploits listed before.)

The approach is simple: given the string <!--[if IE]> Foobar <![endif]--> in an HTML file, almost any parser will treat this as an comment. Except for Internet Exploiter, which will treat "Foobar" as if it was part of the regular text. Instead of "Foobar", you can load an override stylesheet to work around Internet Explorer bugs. Note that as a side effect, MSIE is not a standards compliant parser for XHTML. ;-)

Now for the drawbacks:

  • The part hidden from every parser except IE is not validated by tools
  • The converse construct (remove --), to hide stuff from IE only, is not valid XHTML
  • The conditional needs to be in every HTML file, it's not in the CSS and not cached with the CSS, so sligthly less performant than other solutions.
  • It doesn't nest, you can't use comments in this construct
  • They are, after all, a hack

For comparison, a few of the older tricks in CSS:

body      { background-color: red; }
html>body { background-color: green; }
This is 100% valid CSS, and works because Internet Exploder doesn't support CSS 2 child selectors. But you cannot always use this, since you need to know the parent elements name. Note that this can give you trouble with the upcoming Internet Explorer which will likely have support for this selector, but will probably be "compatible" to some of the known MSIE 5/6 bugs.

body {
  voice-family: "\"}\""; /* some browsers have a parsing bug */
                         /* and will ignore the following rules */
  voice-family: inherit;
  background-color: green;
}
This abuses an attribute to confuse the CSS parser of some browsers. A real hack, strongly discouraged.

[category: /en/xml | Permalink]
Menu
[planet.debian]
[planet.xmlhack]
[planet SELinux]
[munichblogs]
[email]
[RSS 2 feed]
[English RSS 2]
Categories
< December 2005 >
SuMoTuWeThFrSa
     1 2 3
4 5 6 7 8 910
11121314151617
18192021222324
25262728293031
Archives
2010-Mar
2010-Feb
2010-Jan
2009-Dec
2009-Nov
2009-Oct
2009-Sep
2009-Aug
2009-Jul
2009-Jun
2009-May
2009-Apr
2009-Mar
2009-Feb
2009-Jan
2008-Dec
2008-Nov
2008-Oct
2008-Sep
2008-Aug
2008-Jul
2008-May
2008-Apr
2008-Mar
2008-Feb
2008-Jan
2007-Dec
2007-Nov
2007-Oct
2007-Sep
2007-Aug
2007-Jul
2007-Jun
2007-May
2007-Apr
2007-Mar
2007-Feb
2007-Jan
2006-Dec
2006-Nov
2006-Oct
2006-Sep
2006-Aug
2006-Jul
2006-Jun
2006-May
2006-Apr
2006-Mar
2006-Feb
2006-Jan
2005-Dec
2005-Nov
2005-Oct
2005-Sep
2005-Aug
2005-Jul
2005-Jun
2005-May
2005-Apr
2005-Mar
2005-Feb
2005-Jan
2004-Dec
2004-Nov
2004-Oct
2004-Sep
2004-Aug
2004-Jul
Other links:
Swing and the City - Lindy Hop in Munich