X-UA-Compatible - Including EDGE and IE9? - asp.net

<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />
In the above declaration, would IE 10 be forced to render in IE9? I'm not sure what the EDGE would do as it's at the end of the list?
Ian

It renders in IE10 mode. You can check that by including it in a document and opening the F12 tools to see what mode it renders in (shown in the top bar of the tool), or include a script that checks. E.g. with this document https://dl.dropboxusercontent.com/u/444684/tests/X-UA-Compatibletest.html it returns 10.
Looking at the following documentation, it looks like your meta is actually invalid. There they separate modes by a comma and don't repeat the IE token, e.g. <meta http-equiv="X-UA-Compatible" content="IE=7,9,10" > . It also mentions the highest supported mode will be used, so if you include edge, it will always be edge. In that case you don’t get any benefit of using the additional modes, as they’ll never be used.

Related

How to Conditionally apply Compatibility Mode of Browser to use 7 or 9 in asp.net?

I have a JavaScript which works in IE7, 8 Compatibility Mode, Chrome, Firefox etc. The only thing is this script doesnt work in IE8 and IE9. Any Idea?
So, i would like to set the document compatibility mode during runtime in page ,<Head> section. How to Conditionally set the compatibility modes?
I recommend fixing your JavaScript. In the long run you'll save yourself a lot of trouble.
If your dead set on leaving your script as it is, you can use the X-UA-Compatible meta tag (see META Tags and Locking in Future Compatibility). That should make your JavaScript work (no guarantee!).
If you want to set it at run time you can declare it on your page:
<meta id="comp" http-equiv="X-UA-Compatible" runat="server" />
and set it in the code-behind
comp.Content = "IE=EmulateIE7";
Other browser simply ignore the tag however, so you can just put it on your page like this:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

Request.Browser always registers as IE7 even when running IE8 or IE9

I am using the following asp.net code to detect the browser type:
System.Web.HttpBrowserCapabilities browser = Request.Browser;
if (browser.Browser == "IE" && browser.MajorVersion == 7)
{
do stuff...
}
I am running IE9, but when I debug, the browser.MajorVersion is always 7. What could cause this and how can I prevent it?
Make sure that you have browser mode set to IE9 in developer tools
This is what MS says about doctypes source link
If a webpage specifies a doctype directive and includes an X-UA-Compatible header, the header takes precedence over the directive.
If the browser supports the header, but not any of the specified document modes, it will use the highest supported document mode to display the webpage.
Older versions of the browser that don't support the header use the to determine the document mode.
Internet Explorer 9 and earlier versions display webpages without directives in IE5 (Quirks) mode. As a result, we recommend all webpages specify a directive, such as the HTML5 doctype.
This flexibility allows the greatest compatibility for earlier versions of Internet Explorer that remain popular.
Note Because all supported versions of Internet Explorer (including Microsoft Internet Explorer 6) interpret the HTML5 document type as a standards mode document type, we recommend using the HTML5 document type for all webpages that don't require a different declaration. This ensures that your webpages are display in the highest available standards mode.
The X-UA-Compatible header isn't case sensitive; however, it must appear in the header of the webpage (the HEAD section) before all other elements except for the title element and other meta elements.
You need to specify a specific document mode for your webpage, use the meta element to include an X-UA-Compatible header in your webpage, as shown in the following example.
<html>
<head>
<!-- Enable IE9 Standards mode -->
<meta http-equiv="X-UA-Compatible" content="IE=9" >
<title>My webpage</title>
</head>
<body>
<!-- Your Content -->
</body>
</html>

HTML5 lining up in Firefox and Chrome but not at all in IE

http://www.grossmag.com/2012/september/home.shtml
This link works in both Firefox and Chrome. I am not sure why it won't line up correctly in IE. I am trying to convert from old style tables/td's/tr's and this will be great if I can find out why it isn't lining up in explorer.
Sounds like your site is being viewed in compatibility mode in IE. This can depend on the DOCTYPE of your document.
To cause IE to display using the default mode of the current version, use the following META tag
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
This will not fix the site for IE7 (for example). If you wish to do that, then you will likely need to create custom CSS rules for older browsers

ASP.NET Force IE8 to use IE7 or IE8 Compatability View

I've tried the following and all it does is change the Document Mode, not the Browser Mode:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
<meta http-equiv="X-UA-Compatible" content="IE=7">
My particluar page only works when the browser mode is either IE7 or IE8 Compat View.
The code you posted should work.
Please ensure the following:
The meta tag is right at the top of the header, as first element after the <title></title>.
Restart IE and open your page without manually setting the Browser- or Document Mode from the Developer Tools. Setting these manually can overwrite IE's behavior and causes it to ignore the compatibility tag.

IE not rendering CSS properly when the site is located at networkdrive

This is kinda weird problem we came across with my friend. We located our site at network drive and tried to open it from there. All other browsers render this page just fine but IE (btw. why it's always IE? :) ) can't understand inline-block statement. But if I copy our file to my local drive there is no problem, IE renders everything just like other browsers.
I tested this with IE7-9b.
This sounds like that problem - where IE switches rendering modes depending on where the page is located.
It's insane.
See this answer.
http://127.0.0.1/mysite/mypage.php <-- IE8 by default (updated!)
http://localhost/mysite/mypage.php <-- IE8 by default (updated!)
http://machinename/mysite/mypage.php <-- IE7 by default
http://192.168.100.x/mysite/mypage.php <-- IE7 by default
http://google.com/ <-- IE8 by default
So, because you're accessing your site via "network drive", IE is going into IE7 mode, and IE7 does not support inline-block properly, hence your site does not render properly.
You can request IE8 to render your page in IE8 mode by adding this to your page:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
Or, to request IE8 to use the most recent version of it's rendering engine (think IE9), you should use this:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Or, to use Chrome Frame instead if it's available:
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
Use an admin account. IE may Denies access to network drive if not admin.

Resources