Browser compatibility is an issue that always seems to cast a long shadow over enterprise software projects. Over the years, Internet Explorer has cast the longest shadow. The inevitable question, “which versions of IE do we need to support?” usually has a predictable and disappointing answer.

During a recent financial services project, a client required support for Internet Explorer version 9 and higher. During development we tested against IE9, IE10 and IE11 in both native and “Compatibility View”. We knew how the application behaved in each version of IE — or so we thought.

During the pilot phase of the project an end user provided us with feedback. Everything worked as expected in Chrome, however, the same could not be said for Internet Explorer. When the page loaded, the header and footer were visible but the body of the page was empty. This was not a scenario that we had encountered during testing.

The user told us that they were using IE11. Our logs told us that the browser was IE8, with the user agent listed as:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0).

Regardless of the reported user agent, if the browser really was IE8, client-side JavaScript should have displayed a “browser not supported” message.

At first we suspected the Compatibility View settings (under the Tools menu), but still couldn’t replicate the issue. We tried using emulation (IE Developer Tools, opened by pressing F12), but still no success. We couldn’t replicate the issue in any version of the browser, from 8 up to 11.

Looking again at the client’s screenshot, we noticed an unfamiliar “building” icon next to the address box:

screen-shot-2016-10-05-at-2-15-43-pm

 

A Google image search for “Internet Explorer 11 icons” led to this page and the answer: “Enterprise Mode”. With Enterprise Mode installed on a test machine we were finally able to replicate the issue.

So what is Enterprise Mode?

According to Microsoft, Enterprise Mode enables enterprises tosafely update to Internet Explorer 11 while maintaining great backwards compatibility for specific sites that were developed for Internet Explorer 8 or below…<including>..replicating the original Internet Explorer 8 user agent string”.

This explained the mismatch between the user’s browser and the reported user agent string. It also explained why the “browser not supported” message failed to display. However, that left one outstanding question – what do we do about it?

What do we do about it?

The answer to that question is “nothing”. Nothing that is, from a coding perspective. Enterprise Mode is only activated for websites specified on a centrally managed list. The user’s IT department removed our url from the list and the problem was solved.

We had feared that Enterprise Mode was going to introduce more cost and complexity into our project, but fortunately it did neither. It may have been lurking in the shadows of browser compatibility but it was more of a pothole than a pit. And next time we have unexpected browser behavior, it will be on our list of things to investigate.