开发者

Determine if in IE8 Compatibility Mode using conditionals

开发者 https://www.devze.com 2023-01-04 22:18 出处:网络
I understand from my research that IE8 does annoying things like fo开发者_开发知识库rcing itself into IE7 mode for local intranet hosts and local IP ranges. I understand from a previous question that

I understand from my research that IE8 does annoying things like fo开发者_开发知识库rcing itself into IE7 mode for local intranet hosts and local IP ranges. I understand from a previous question that there is no way to use conditional statements as, irrespective of whether IE8 is rendering in IE8 or IE7 mode, it will still only use the <!--[if IE 8]> conditional.

Since this question was asked a while ago (during the IE8 beta phase by the looks of things) I am wondering if this has changed or if there is any other way using conditionals to determine if IE8 is in compatibility mode.

Thanks!


No, you can't do it using conditionals.

The best way to do it is to use the document.documentMode property as described in the link Pekka posted. How can I detect if IE8 is running in compatibility view?


http://msmvps.com/blogs/paulomorgado/archive/2010/04/05/defining-document-compatibility-in-internet-explorer-8.aspx


In the end, I chose to mix the two common strategies to deal with this bug.

I created an override CSS file, which I import using conditional comments. In the event of IE 8 or 9, though, this override doesn't look as good, so I include the 'force IE into latest rendering mode' header switch, as shown below.

<!--[if lte IE 7]>
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <link rel="stylesheet" type="text/css" href="/Content/IE7Overrides.csss" />
<![endif]-->

This provides IE7 with a decent failsafe, but forces IE8 and IE9 to show it in the latest browser, which will show the CSS-based table correctly.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号