19

My website is broken in IE11.

We all know that HTML tags allow developer to force IE compatibility mode; in example

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

worked great and solved the visualization problems for IE10.

But actually on IE11, even if Compatibility mode is set to IE9, User agent string is set to default and javascript doesn't work. Changing manually User agent string to IE10 solved my problems.

For shure I'm going to solve the real problems that cause website errors, but actually I need a fast, programatic way to force "User agent string" to IE10, since I can't contact every user.

Can someone help?

Emanuele Greco
  • 12,551
  • 7
  • 51
  • 70
  • The `default` is related to `Document mode`. If you log `navigator.userAgent` when `content="IE=8"`, you'll get `Mozilla/4.0 (compatible; MSIE 8.0; ...)`. – Teemu Nov 21 '13 at 13:14
  • @Teemu and so? Changing manually "User agent string" solves the problem. Are you suggesting a way to change it programmatically? – Emanuele Greco Nov 21 '13 at 13:48
  • If I've a `` in IE11, without touching "Emulation" panel, logging `navigator.userAgent` prints `Mozilla/4.0 (compatible; MSIE 8.0; ...)`, which is not _default_ for IE11. If that is not what you need , I've missunderstood your question... – Teemu Nov 21 '13 at 14:59
  • What code needs the UA change? Can you edit that code instead of trying to get the UA string to change? – Dave Methvin Nov 21 '13 at 18:04
  • 3
    Removing the MSIE xx.0 from the userAgent string was a bad move for IE 11. It will break lots of JavaScript that relies on assuming the browser is IE if the MSIE exists. Might also break MS's own match in their supplied browsers file for .NET. – Dan Randolph Jan 10 '14 at 21:19

4 Answers4

17

I also faced the same problem in my 2003 windows server with .net framework 4.0 and after a long research i found the below is helpful...

I created App_Browsers folder and put a browser file named as ie.browser and pasted the below browser definition text and it started working

<browsers>
<browser id="IE11" parentID="Mozilla">
<identification>
  <userAgent match="Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />
  <userAgent nonMatch="IEMobile" />
</identification>
<capture>
  <userAgent match="Trident/(?'layoutVersion'\d+)" />
</capture>
<capabilities>
  <capability name="browser"              value="IE" />
  <capability name="layoutEngine"         value="Trident" />
  <capability name="layoutEngineVersion"  value="${layoutVersion}" />
  <capability name="extra"                value="${extra}" />
  <capability name="isColor"              value="true" />
  <capability name="letters"              value="${letters}" />
  <capability name="majorversion"         value="${major}" />
  <capability name="minorversion"         value="${minor}" />
  <capability name="screenBitDepth"       value="8" />
  <capability name="type"                 value="IE${major}" />
  <capability name="version"              value="${version}" />
</capabilities>
 </browser>

<!-- Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11,0) like Gecko -->
<browser id="IE110" parentID="IE11">
<identification>
  <capability name="majorversion" match="11" />
</identification>

<capabilities>
  <capability name="ecmascriptversion"    value="3.0" />
  <capability name="jscriptversion"       value="5.6" />
  <capability name="javascript"           value="true" />
  <capability name="javascriptversion"    value="1.5" />
  <capability name="msdomversion"         value="${majorversion}.${minorversion}" />
  <capability name="w3cdomversion"        value="1.0" />
  <capability name="ExchangeOmaSupported" value="true" />
  <capability name="activexcontrols"      value="true" />
  <capability name="backgroundsounds"     value="true" />
  <capability name="cookies"              value="true" />
  <capability name="frames"               value="true" />
  <capability name="javaapplets"          value="true" />
  <capability name="supportsCallback"     value="true" />
  <capability name="supportsFileUpload"   value="true" />
  <capability name="supportsMultilineTextBoxDisplay" value="true" />
  <capability name="supportsMaintainScrollPositionOnPostback" value="true" />
  <capability name="supportsVCard"        value="true" />
  <capability name="supportsXmlHttp"      value="true" />
  <capability name="tables"               value="true" />
  <capability name="supportsAccessKeyAttribute"    value="true" />
  <capability name="tagwriter"            value="System.Web.UI.HtmlTextWriter" />
  <capability name="vbscript"             value="true" />
</capabilities>
  </browser>
</browsers>
Mike Cole
  • 14,474
  • 28
  • 114
  • 194
Subhranshu
  • 171
  • 2
  • Been searching for this for months! Can't upgrade .NET 4.0 to 4.5 because I have no idea what it will pull down with it. Now finally Ajax works (sort of) with IE 11 - Thank you – gchq Feb 20 '14 at 01:43
  • Can this be added without the need for a re-build? – Jackson Apr 03 '14 at 14:31
  • @Jackson no need to re-build. – Benk Apr 17 '14 at 02:49
  • 2
    Sorry, but that did not help at all on Server 2003 using IE11. – AH. May 09 '14 at 05:40
  • I have .net 4.5 installed but old legacy code that checks the agent string still fails with IE 11. Since I do not have the source code, I used this method and it solved the problem for me. Thank you @Subhranshu – Adam May 09 '14 at 17:49
  • Where we need to create App_Browsers folder, plz share the path – Bhaskara Arani Nov 18 '16 at 11:43
5

Solved! Website is up just installing Dotnet framework 4.5 on server


Actually I didn't find a way to force programmatically browsers User agent string (this was the original question). But repaired website with 0 code..

Just made lot of tests and on one server I found out that website was working, on other server it wasn't.

The "good server" was a Win2012, and "bad servers" were Win2008. On Win2012 Aspnet 4.5 was running, and on Win2008 it wasn't.

I installed dotnet framework 4.5 on bad servers too, and everything started working!

Emanuele Greco
  • 12,551
  • 7
  • 51
  • 70
1

If you don't want to install the entire .NET Framework 4.5, you can just update the .NET Framework 4.0 with this fix from Microsoft http://www.microsoft.com/en-us/download/confirmation.aspx?id=39257 In my case this worked perfectly.

Ion Gritco
  • 57
  • 1
  • 9
0

Put the code in your WebConfig: Working in 2017-2018

  <system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-UA-Compatible" value="IE=Edge" />
    </customHeaders>
  </httpProtocol>
  </system.webServer>
Thwyster
  • 71
  • 7