Force "Internet Explorer 8" browser mode in intranet
S

13

71

There are "Internet Explorer 8", "Internet Explorer 8 Compatibility Mode", and IE7 mode in IE8.

However, the default setting in IE make all intranet website use "IE8 Compatibility Mode" even I have setted doctype, the meta tag, http header as suggested to force it into IE8 mode.

I have

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

and

<meta http-equiv="X-UA-Compatible" content="IE=8" >

But it still goes into "IE8 Compatibility Mode", without any changes in IE setting.

How to force it into pure "IE8" mode, without change any browser's setting?

PS. I am not talking "document mode" here.

Sorilda answered 30/4, 2010 at 7:8 Comment(4)
Despite what some of the answers say, there is an easy fix for this as pointed out by Codex73: In Tools -> Compatibility Settings, uncheck the box which says "Display intranet sites in Compatibility View".Levorotation
That may work for some, but that's not the programmatic answer that Dennis was looking forChromoprotein
How are you detecting which mode it is in?Spoilsport
Here is a very relevant new blog article from MSFT - blogs.msdn.com/b/cjacks/archive/2012/02/29/…Risible
S
45

Seem that MSFT has not consider a large intranet environment that we have many different web application running inside.

There is no way to bypass the IE8 setting, according to somewhere I read on MSDN forum.

So, I will have to beg my system administrators to put some new group policies to change "Compatibility View" setting and the value and prevent user change the value, until MSFT discover this bug and fix it.

From an MSDN blog post (emphasis theirs): "Browser Mode is chosen before IE requests web content. This means that sites cannot choose a Browser Mode."

Sorilda answered 3/5, 2010 at 1:33 Comment(5)
Mmm... a -1 marked as the answer. I actually this is the correct answer, by default IE displays intranet sites as IE8 Compatibility Mode. You don't have to change all those options that Codex mentioned though. Just uncheck the 'Display intranet sites in Compatibility View' box from the Page->Compatibility View Settings Dialog. Yeah, a big pain, all the users will have to do. Dumb idea to default all websites to Compatibility and not provide a way to override it. (+1 so it's not -1 anymore)Ballet
X-UA-Compatible tag is supposed to override mode that browser would otherwise use, isn't it?Alvardo
@Tuuka: yes, but it looks like X-UA-Compatible will not override the "Display intranet sites in Compatibility View" setting.Hardhack
Or, to be more precise, X-UA-Compatible will override the document mode but not the browser modeHardhack
I added an MSDN reference that confirms the assertion that "there is no way to bypass the IE8 setting"Causalgia
D
35

It is possible to override the compatibility mode in intranet. Just add the below code to the web.config. Worked for me with IE9.

<system.webServer>
<httpProtocol>
  <customHeaders>
    <clear />
    <add name="X-UA-Compatible" value="IE=edge" />
  </customHeaders>
</httpProtocol>

Dyaus answered 4/5, 2011 at 17:15 Comment(9)
(to clarify: It works for the document mode, but not browser mode)Hardhack
This answer is for a .NET web site, since the asker didn't ask for a .NET solution it should be edited to be technology independent.Shaunda
@Albireo: The tech-independent way to fix this is to set the X-UA-Compatible header. This answer shows how for IIS. For apache, check here: blogs.msdn.com/b/hanuk/archive/2008/08/28/…Namnama
As we're talking about intranets, may as well put in a caveat for SharePoint: It's best not to do this, as various bits of functionality will break in IE9. My blog contains more info on this: get-spblog.com/2012/05Illdefined
I have an intranet site written in .net which broke when going to Windows 8 and IE 10. This fixed the problem. Thanks.Berndt
This won't work as the <meta> tag takes precedence over HTTP headers. See: #9129239Liva
sadly, my IE8 still uses Compat mode with such web.config change.Prairie
how do i do it on wordpress 3.5.1Caen
The question is specifically about browser mode, not document mode. X-UA-Compatible does nothing to the browser mode. The answer is absolutely incorrect.Rutledge
Y
11

You'll have to make some adjustments to IE.

Here they are.....

In Internet Options / Local Intranet / Sites

Under : Local Intranet inside Sites, uncheck "Automatically detect intranet network".

Then select only "Include all network paths (UNCs)

See attached screenshots

Screenshot

Yellow answered 30/4, 2010 at 12:55 Comment(5)
Why would I have to make these adjustments. Please provide or link to an explanation of why security intranet settings have to be adjustedCheck
here's your link to why: blogs.msdn.com/ie/archive/2008/08/27/… You can also disable compatibility mode for all intranet sites if that what's needed. here's another link: support.microsoft.com/kb/956197Yellow
Disabling compatibility mode for intranet sites is probably the more appropriate this solution, as this just stops intranet detection in general.Levorotation
The fact that I have to uncheck "Include all local (intranet) sites not listed in other zones", while the "Automatically detect intranet network" is already unchecked, is awesome (or, in other words, antipattern of usability. The visual appearance suggests 2,3,4 apply only if 1 is selected).Ipoh
Don't do this for SharePoint! It will break all sorts of core functionality. I think it might break WebDAV support and the ActiveX control for gridview, for example. It might also break Windows password authentication integration (specifically "remember my password"). You're much better off changing the compatibility view setting under the 'advanced' tab. As a more general rule, turning this off is going to break various bits of functionality that you seriously are going to want in an intranet. Basic stuff like reducing authentication prompts comes to mind. This is a "sledgehammer" solutionIlldefined
M
6

I found the answers here hard to follow, so here's the important information in a nutshell:

If your intranet uses default settings for IE, IE7 Standards Mode is enforced for intranet sites regardless of any website settings.

From this:

Compatibility View and the Enterprise

A large number of line-of-business websites are Internet Explorer 7 capable today. In order to preserve compatibility, Internet Explorer 8 ships with smart defaults based on zone evaluation. In the default state, all sites on the public internet display in Internet Explorer 8 Standards mode (Compatibility View off) and all intranet websites display in Internet Explorer 7 Standards mode (Compatibility View on).

Let’s look at some examples. If you navigate to sites on your local intranet like http://myPortal and http://sharepoint/sites/mySite, Internet Explorer 8 identifies itself with a User Agent string of ‘7’, Version Vector of ‘7’, and displays webpages that trigger standards mode in Internet Explorer 7 Standards mode. This combination allows webpages that worked correctly in Internet Explorer 7 to continue to do so in IE8.

Moen answered 9/11, 2010 at 3:46 Comment(3)
And you can easily disable this in Tools -> Compatibility Settings.Levorotation
@humble coffee, "easily" is setting a non-standard X-UA-Compatible header. Managing local machine settings on a network strikes me as an exponentially difficult task.Streit
@humblecoffee; alas it's not easy in a locked down corporate environment where a change such as this is forbidden.Liva
J
4

To override the Compatibility View settings for intranet or all websites you need to make IE8 emulate itself.

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >
Jaquelin answered 25/4, 2011 at 18:40 Comment(1)
(to clarify: It works for the document mode, but not browser mode)Hardhack
I
3

Set a custom HTTP header instead of using the <meta... in the <head> section. These are supposed to be equivalent, but I have seen that an X-UA-Compatible HTTP header from the server will override IE 8's "Display intranet sites in Compatibility View" setting, where the <meta... element would not.

Inurbane answered 30/4, 2010 at 15:5 Comment(6)
unfortunately, it does not work. Checked the HTTP header has X-UA-Compatible: IE=8, but it still goes into "IE8 Compat" mode.Sorilda
I have a better understanding of your question now. The Browser Mode is only going to influence the UA string and which Document Mode you end up in when no X-UA-Compatible is specified. So while the Document Mode can be changed, the Browser Mode cannot, I think. And this is not seen as a problem since it's the Document Mode that affects the page rendering. Is there a reason you need to change the Browser Mode, perhaps for some UA string sniffing? You've got me curious. Can you tell the difference without Developer Tools open?Inurbane
David, some javascript behave not the same in two modes(and you can never find a full detail list), some of the IE specific feature are even disabled in real IE8 mode. That's why they are two modes, not one. When user use the same browser, I wish they see and run the same; not a same version, different browser nightmare.Sorilda
I just found some more detail on the topic. blogs.msdn.com/b/ie/archive/2008/04/10/…Sorilda
Additionally, the meta version is not valid HTML5; even MS suggests to use HTTP headers as @David Kolar advises: msdn.microsoft.com/en-us/library/cc288325%28v=vs.85%29.aspxStreit
teelahti.fi/blog/… This is a very helpful (and old) tip that solved my Internal server Compatibility problem. I tried all of your solutions before that.Winnick
A
2

If you are using .NET, I have the answer for you:

HTML:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=8" >

Web.Config:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <clear />
        <add name="X-UA-Compatible" value="IE=8" />
      </customHeaders>
    </httpProtocol>
Artist answered 12/10, 2012 at 13:49 Comment(1)
voted up the -1 as this answer seems valuable to me and there was no explanation for it.Budwig
H
1

Read somewhere that the DOCTYPE declaration must be the very first line. No comments of any kind, nor empty lines.

In combination with setting the HTTP Response Headers, this worked for me. Browser Mode went from "IE9 Compatibility Mode" to just "IE9 Mode".

Havildar answered 22/12, 2011 at 17:34 Comment(2)
We are talking about IE8 though.Hellebore
It is true that the DOCTYPE declaration must be the first line. A javascript include can go in front of it, but not other head elements. I voted up the -1.Budwig
P
0

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\BrowserEmulation IntranetCompatibilityMode 1-->0

Polyphemus answered 18/11, 2011 at 3:44 Comment(1)
I believe the OP was asking about server-side solutions, not client-side solutions.Ohl
B
0

In order for the META declaration to work, the doctype has to be the simplified version:

<!DOCTYPE html>

Not the longer statement in Dennis' question.

Budwig answered 1/3, 2012 at 1:34 Comment(2)
This HTML header should be magicheader of HTML5. Which I guess is not supported by IE8?? Can anyone confirm?Sorilda
This doctype DOES work in ie8, even though HTML5 features will not. Here's a good link: ejohn.org/blog/html5-doctype/#postcommentBudwig
S
0

This combo did the trick for me:

<!DOCTYPE HTML>
<HEAD>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >
</HEAD>

at least IE developer tools reports IE9 Compat View, IE8 standards

just for kicks i tried EmulateIE7 and that worked as well. simplifying the extended !DOCTYPE was key.

Selina answered 10/1, 2013 at 17:40 Comment(0)
D
0

You need remove port number from your domain site name site:1180/index/

If browser see port number in url - hi "think", that's is intranet.

setup your dns server for friendly urls - site.com/index and it work OK

Drollery answered 14/3, 2013 at 7:50 Comment(0)
T
0

The answer marked as "correct" is technically correct but suggests that there is no solution to the real issue being faced by most people that is: "how do I properly show on IE8, with compatibility mode enabled, a web application which does not support compatibility mode?".

<!DOCTYPE HTML>
<HEAD>
    <meta http-equiv="X-UA-Compatible" content="Edge" >
</HEAD>

this worked for me on several workstations.

If the above code is implemented on application side, IE8 appears to behave as if it was not in compatibility mode, even though it will still show browser mode as compatibility mode.

Traitor answered 13/1, 2015 at 9:19 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.