Total Pageviews

Monday, December 2, 2013

IE 11 compatibility for ASP.NET Framework


With the release of IE 11 there has been compatibility issues with .NET Framework 4.0 and likewise every developer it has been a nightmare for all the sites that were not catering for this change/upgrade.

Issue: 
Internet Explorer version 11 (IE 11) has thrown many sites either on javascript variables or CSS styling with errors such as "
“The value of the property '' is null or undefined, not a Function object”

Cause:
Internet Explorer 11 does not recognize .NET Framework properly.

Resolution:
This issue can be fixed by adding "App_Browsers" folder into your website or web application project.

If App_Browsers folder does not exist in your current solution/website/project, then follow these steps:

1. Right Click on your project/website name 
2. Go to Add 
3. Go to "Add ASP.NET folder
4. Select "App_Browsers"

Otherwise:
1. Right click on "App_Browsers" folder 
2. Add New Item
3. Select browser file, name it ie11.browser
4. Copy the following code(red text) into ie11.browser file

CODE TO COPY:
<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>

5. Save the file and build the project(recommended but not mandatory, but on saving the file all your sessions will be disposed)

6. Re-test your project.

I hope this would help many developers and save the tiring time of re-search.

Your feedback will be much appreciated. 


Cheers