I have a website with checkboxes and radio boxes that users print out. IE8 has a bug where form elements print as the page loaded, not modified by user actions or JavaScript (see, e.g., MSFT bug #431489).

Fortunately, the bug only manifests when in IE8 standards mode. It doesn't happen in IE7, nor in IE8 under almost-standards mode or quirks mode.

So I was looking for the best way to tell IE to use a lower mode. I decided that
Code:
<meta http-equiv="X-UA-Compatible" content="IE=7">
was reasonably good: no problems in other browsers, and although I get the IE7 rendering bugs on the affected page, those are minor enough as long as I segregate the meta tag to only those few pages where it's needed.

But then I noticed that my page isn't valid HTML5 with that tag, which bothers me. I tried to use
Code:
<!--[if IE 8]>
<meta http-equiv="X-UA-Compatible" content="IE=7">
<![endif]-->
or even
Code:
<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=7">
<![endif]-->
but it looks like once it reads a conditional comment, it's too late to change X-UA-Compatible.

Also, ideally I'd allow IE9 to display the page in IE9 mode rather than IE8 mode (for when it comes out). Any thoughts on how I can improve on any of these areas?