SharePoint 2010 People Picker and Workflow Compatibility Fixes For IE10/IE11

I’ve recently encountered a bit of frustration when dealing with the people picker and publishing workflow in IE 10/11. I decided to dig around and find what was causing such issues (other than Microsoft failing to make SharePoint 2010’s IE compatibility future-proof). First thing I tried was setting the document emulation to IE9 and that worked for the workflow issue, but failed for the people picker dialog. Through trial and error, I’ve determined that IE8 emulation is what’s needed for the people picker dialog to work. How do I put this all together without putting the ENTIRE domain in compatibility view? The X-UA-Compatible header is the answer.

While looking through the 14 Hive directory (C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14), I was able to locate some master pages that were statically setting the browser mode to be IE8, but for some reason the master page for the people picker dialog wasn’t. BINGO! Here’s what I added within the <head> section in the following files to make the people picker and the workflow page work correctly:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\pickerdialog.master

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

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\GLOBAL\v4.master

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

You should now be able to publish a page and use the people picker correctly after following those steps above. I’m curious to know more issues that IE10/IE11 cause for SharePoint 2010.

Edit: I’ve noticed that I am unable to save changes to Pages from within Edit Properties (EditForm.aspx). The fix is a modification of Markus Drake’s solution that needs to applied to end of the <body> tag within the v4.master file:

<script language="javascript">
if (typeof UserAgentInfo != 'undefined' && !window.addEventListener) {
 UserAgentInfo.strBrowser=1;
}
</script>