On microsoft's site they claim that simple doctype declaration is enough. But even a document as short as this falls back to IE7 mode:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
On microsoft's site they claim that simple doctype declaration is enough. But even a document as short as this falls back to IE7 mode:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
Internet Explorer makes the assumption that most webpages were written to target earlier versions of IE and looks at the doctype, meta tags and HTML to determine the best compatibility mode (sometimes incorrectly). Even with a HTML5 doctype IE will still place your website in compatibility mode if it's an intranet site.
To ensure that your website always uses the latest standards mode you can either make sure Display intranet sites in Compatibly
is turned off. However you have to do this on each machine local to the web server (instructions are below).
Alternatively, and better yet, you can use the X-UA-Compatible
header to turn this off from the server. It's important to note that using the meta tag will not work!
<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Throughout MSDN it's mentioned that using a host header or a meta tag should override even intranet sites. The article Understanding compatibility modes in internet explorer 8 says the following.
A large number of internal business web sites are optimized for Internet Explorer 7 so this default exception preserves that compatibility. ... Again if a Meta tag or http header is used to set a compatibility mode to the document it will override these settings.
However, in practice this will not work, using a host header is the only option that works. The comments section of the article also shows numerous examples of this exact issue.
Using a Meta tag also has several other issues such as ignoring the tag if it's not directly under the <head>
tag or if there is too much data before it (4k). It may also trigger the document to be reparsed in some versions of IE which will slow down rendering. You can read more about these issues at the MSDN article Best Practice: Get your HEAD in order.
Adding the X-UA-Compatible header
If you are using .NET and IIS you can add this to the web.config
, you could also do this programmatically:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
If you're not using IIS it's easy to do in any language. For example, here's how to do it in PHP:
header('X-UA-Compatible: IE=edge');
As long as the X-UA-Compatible
header is present with the HTML5 doctype, a site will always run in the latest standards mode.
Turning off Compatibility View
It may still be useful to turn off Compatibility View. To do so untick Display all intranet sites in compatibility view
in the Compatibility View Settings.
You can bring this up by hitting Alt to get the menu.
Edit This answer also pertains to IE9.
alt
to bring up the toolbar, it's under tools -> compat view settings –
Rossierossing <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
–
Subulate meta
tag "will not" (or "doesn't always") work, but you say nothing about why you say that, what evidence you have for it, etc. What's the genesis of those statements? Especially the strong "will not" which is flatly wrong: It absolutely does work in the normal case. If you know of edge cases where it doesn't, that would be useful information. –
Trigonous intranet sites
not just the general case which may be the link you are missing. Regardless I've added some more references which I think may help. –
Rossierossing meta
tag is early enough that the browser isn't committed to compatibility view (and within the first 4k, sigh), it does work. I've been happily using it after the meta charset
and before title
(which I see is also what Eric Law recommends in the article you linked; cool). –
Trigonous This works for me..
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
X-UA-Compatible
meta tag, yet still isn't triggering IE10 Standards document mode as Page Default, I found that if the meta tag is located below script tags or is just too far from the top of the <head>
in the DOM tree, IE10 cries and sets the document mode to IE8 Standards. So, keep your IE=edge
meta tag close the <title>
tag. Not always a simple a fix for Wordpress sites when it's not hard-coded in the header template file. Not sure if IE11 cares where the meta tag is, but hope this proves helpful to someone. –
Corelli Try adding the following tag to the head
<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
IE=Edge
instead –
Rossierossing The meta tag doesn't do anything for intranet sites and my issue was IE10 rendering in IE10 compatibility mode. What tackled the issue for me was taking @Jeow's answer further and using that value in an http header by adding the following to web.config
under IIS:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<!-- <add name="X-UA-Compatible" value="IE=edge" /> not good enough -->
<add name="X-UA-Compatible" value="IE=11,IE=10,IE=9,IE=8" />
</customHeaders>
</httpProtocol>
</system.webServer>
For IE purposes, intranet sites include public-facing sites that are not routed to externally - for example a Stackoverflow employee working from the office would probably see stackoverflow.com in compatibility mode.
It worked perfectly for me when i did the folowing:
On http://msdn.microsoft.com/en-us/library/gg699338(v=vs.85).aspx
Used the exact example they provide in the first box(added the missing </html>
at the bottom), opened it in IE10 and standards was forced, i think you may need actual content in the html for it to force standards not sure though.
My suggestion would be to replace your empty code with actual content(something simple) and see what it does.
© 2022 - 2024 — McMap. All rights reserved.