locked
Sharepoint 2010 and IE9 compatibility RRS feed

  • Question

  • I have changed the master page to enable IE9 for some additional fluff on my application pages:

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

    However when using the PeopleEditor control, if I enter a name and then click the check names button and then do a postback I receive an internal xsd error, is this a bug and is there a work-around which doesnt involve going back to IE-8?

    You can test by changing the page meta tag as above and adding the two following lines to any page, after entering a name and validating upon clicking the submit button the error appears, this happens before both page_load and the button click events.

    <SharePoint:PeopleEditor id="pickerApprover" ValidatorEnabled="true" AllowEmpty="false" MultiSelect="false"  runat="server" SelectionSet="User" Width="300px" />

    <asp:Button ID="btSendRequest" runat="server" Text="Send Request"/>

    Namespace prefix 'xsd' is not defined.

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.InvalidOperationException: Namespace prefix 'xsd' is not defined.

    Source Error:

    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

    Stack Trace:

    [InvalidOperationException: Namespace prefix 'xsd' is not defined.]
      System.Xml.Serialization.XmlSerializationReader.ToXmlQualifiedName(String value, Boolean decodeName) +1338197
      Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderDictionaryEntryArray.Read1_Object(Boolean isNullable, Boolean checkType) +92
      Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderDictionaryEntryArray.Read2_DictionaryEntry(Boolean checkType) +651
      Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderDictionaryEntryArray.Read3_ArrayOfDictionaryEntry() +645
    
    [InvalidOperationException: There is an error in XML document (1, 43).]
      System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) +1479
      System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader) +166
      Microsoft.SharePoint.WebControls.EntityEditor.ParseSpanData(String spans) +810
      Microsoft.SharePoint.WebControls.EntityEditor.LoadPostData(String postDataKey, NameValueCollection values) +85
      System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +945
      System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2071
    
    Thursday, May 26, 2011 9:06 AM

Answers

  • Hi Caserta,

     

    Thanks for your post.

    First, What’s the version of your IE 9, is it 32-bit or 64-bit? The Internet Explorer 9 (64-bit) is Supported with limitations.

    Second, I suggest you submitting a feedback at Connect site:

    http://connect.microsoft.com/site428

     

    thanks for your understanding.

    • Marked as answer by KeFang Chen Friday, June 3, 2011 1:09 AM
    Tuesday, May 31, 2011 11:34 AM

All replies

  • Hi Caserta,

     

    Thanks for your post.

    First, What’s the version of your IE 9, is it 32-bit or 64-bit? The Internet Explorer 9 (64-bit) is Supported with limitations.

    Second, I suggest you submitting a feedback at Connect site:

    http://connect.microsoft.com/site428

     

    thanks for your understanding.

    • Marked as answer by KeFang Chen Friday, June 3, 2011 1:09 AM
    Tuesday, May 31, 2011 11:34 AM
  • Is there any more information on this issue? I am experiencing this problem and need a resolution. I searched the connect site for the issue and found no results. I am seeing this issue on multiple versions of IE-9 not just the 64-bit.

    Any help would be greatly appreciated.

    Wednesday, June 8, 2011 1:13 PM
  • OK, I've found the solution for this problem. It has to do with the IE9 document standards for the client's browser. If the document mode is set to IE 9 Standards the issue occurs, if you change the document mode to IE 8 Standards the issue no longer occurs. There is a way to force the page to load using IE 8 Standards in your aspx page. Add the following meta tag to your aspx page and the clients browser will load the page in IE 8 Standards document mode:

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

    Friday, June 17, 2011 2:57 PM
  • Thanks so much!!! works great!
    Wednesday, July 20, 2011 12:31 AM
  • This is not a solution. Changing document standards to IE8 is equal to working on IE8. Question is still open. Why is it not working on IE9? How can we keep up the compatibility for IE9?
    Praveen Kumar Thalluri
    Wednesday, August 17, 2011 11:12 AM
  • This is not a solution. Changing document standards to IE8 is equal to working on IE8. Question is still open. Why is it not working on IE9? How can we keep up the compatibility for IE9?
    Praveen Kumar Thalluri
    I strongly agree with Praveen. This is not a solution, we need IE9 standards in IE9.
    Wednesday, August 24, 2011 5:46 AM
  • Hi, I was wondering if you ever found a hotfix (or some workaround) for this issue? I'm having the same issue with 32-bit and 64-bit IE9.
    Thursday, October 27, 2011 7:12 AM
  • This is not a solution. Changing document standards to IE8 is equal to working on IE8. Question is still open. Why is it not working on IE9? How can we keep up the compatibility for IE9?
    Praveen Kumar Thalluri
    I strongly agree with Praveen. This is not a solution, we need IE9 standards in IE9.

    +1. We are implementing CSS3, so downgrade to IE8 is impossible !
    Tuesday, November 29, 2011 3:32 PM
  • I'm having a very similar issue involving certain javascripts (namely, those that control Rich Text Editor controls on form text fields not working in IE9 mode). I need it to run in IE9 mode for a REASON (HTML5, CSS3). Forcing IE9 to render as IE8 is not a fix.
    Wednesday, November 30, 2011 10:28 AM
  • Hi,

    Why this topic is marked as answered if the connect link does not work and I'm still facing this issue with SP2010 + SP1 + Oct 11 CU.

    The masterpage is using CSS3 and the change to IE8 is not an option.

    Wednesday, December 14, 2011 2:25 PM
  • It looks like moderator is always right :(

    Wednesday, December 14, 2011 3:35 PM
  • Hello,

    Is there a solution to this?  I am having the error "Namespace prefix 'xsd' is not defined.  "    

    When trying to set alerts on a list.  This started happening (as far as I can tell) after setting the meta tag to IE-9 so that CSS3 would work.

    Any solution?

    Monday, January 30, 2012 6:44 PM
  • I am having the same issue with users subscribing to alerts

    Anyone find a fix?

    Wednesday, February 8, 2012 4:10 PM
  • I am having the same issue with users subscribing to alerts

    Anyone find a fix?


    The "workaround" is to change the IE version from 9 down to 8 as posted near the top of the thread.  The real problem is SharePoint's incompatibility with IE-9, so if a Microsoft person could advise on a fix for that, it would be great!
    Wednesday, February 8, 2012 9:24 PM
  • I found a solution this is not the perfect one but fine if you want to use HTML 5 and SharePoint.

    We need to have Chromeframe to get that working.

    Here is the steps:

    1. Install Chomeframe add on: http://www.google.com/chromeframe 
    2. Make sure the add-on is enabled
    3. Close and reopen the browser
    4. In SharePoint master page go to <head> section and put following:
      <meta http-equiv="X-UA-Compatible" content="chrome=1"/>

    and you are done.

    Chromeframe will render the HTML5 content property and IE will provide SharePoint's integration feature.


    Amit

    Thursday, February 16, 2012 1:25 PM
  • Hello Amit,    While it is nce to know that the work around fix this for you, and this is certainly something we maybe able to do for our internal only web applications. 

    It seems like a impractical fix for all of the web applications we have since we have external users whom are not part of our company, so we cannnot control what browser add-ons they have.

    Thursday, February 16, 2012 1:51 PM
  • Hi GGratto,

    Yes you are right.

    For external users, if they are just viewing the site and doing very few things on SharePoint then IE will work fine.

    I think IE 9 has issues with People Picker and some other controls, so if those controls are not used in public viewing then it would work fine.

    I guess IE9 has issue with related to something with xml. I have been troubleshooting and found that on post back IE9 was posting different data for People Picker control in comparision with Chrome and Firefox. Chrome and FireFox posts exact same data/content but IE9 different.

    Amit


    Amit

    Thursday, February 16, 2012 2:01 PM
  • Caserta,

    This really is one of the more vexing issues of upgrading the branding/master page of a SharePoint site. Please try this solution:

    I created a javascript file called entityeditor.ie9fix.js, added the javascript code that will follow, and saved it in /layouts/1033.

    In my master page I added

    <script type="text/javascript" src="/_layouts/1033/entityeditor.ie9fix.js"></script>

    to the very BOTTOM of the page. For some reason using the usual tricks to get it to load after the original entityeditor.js from SharePoint did not work.

    Inside the custom javascript is an override of a SharePoint function and a helper function:

    function ConvertEntityToSpan(ctx, entity)
    {ULSGjk:;
       
    if(matches[ctx]==null)
            matches
    [ctx]=new Array();
       
    var key=entity.getAttribute("Key");
       
    var displayText=entity.getAttribute("DisplayText");
       
    var isResolved=entity.getAttribute("IsResolved");
       
    var description=entity.getAttribute("Description");
       
    var style='ms-entity-unresolved';
       
    if(isResolved=='True')
            style
    ='ms-entity-resolved';
       
    var spandata="<span id='span"+STSHtmlEncode(key)+"' isContentType='true' tabindex='-1' class='"+style+"' ";
       
    if (browseris.ie8standard)
            spandata
    +="onmouseover='this.contentEditable=false;' onmouseout='this.contentEditable=true;' contentEditable='true' ";
       
    else
            spandata
    +="contentEditable='false' ";
        spandata
    +="title='"+STSHtmlEncode(description)+"'>"
        spandata
    +="<div style='display:none;' id='divEntityData' ";
        spandata
    +="key='"+STSHtmlEncode(key)+"' displaytext='"+STSHtmlEncode(displayText)+"' isresolved='"+STSHtmlEncode(isResolved)+"' ";
        spandata
    +="description='"+STSHtmlEncode(description)+"'>";
       
    var multipleMatches=EntityEditor_SelectSingleNode(entity, "MultipleMatches");
        matches
    [ctx][key]=multipleMatches;
       
    var extraData=EntityEditor_SelectSingleNode(entity, "ExtraData");
       
    if(extraData)
       
    {
           
    var data;
           
    if(extraData.firstChild)
                data
    =extraData.firstChild.xml;
           
    if(!data) data=extraData.innerXml || extraData.innerHTML;
           
    if(!data && document.implementation && document.implementation.createDocument)
           
    {
               
    var serializer=new XMLSerializer();
                data
    =serializer.serializeToString(extraData.firstChild);

                       
    // **** CUSTOM FUNCTION ****
                data
    = fixDataInIE9(data);
           
    }
           
    if(!data) data='';
            spandata
    +="<div data='"+STSHtmlEncode(data)+"'></div>";
       
    }
       
    else
       
    {
            spandata
    +="<div data=''></div>";
       
    }
        spandata
    +="</div>";
       
    if(PreferContentEditableDiv(ctx))
       
    {
           
    if(browseris.safari)
           
    {
                spandata
    +="<span id='content' tabindex='-1' contenteditable='false'  onmousedown='onMouseDownRw(event);' onContextMenu='onContextMenuSpnRw(event,ctx);' >";
           
    }
           
    else
           
    {
                spandata
    +="<span id='content' tabindex='-1' contenteditable onmousedown='onMouseDownRw(event);' onContextMenu='onContextMenuSpnRw(event,ctx);' >";
           
    }
       
    }
       
    else
       
    {
            spandata
    +="<span id='content' tabindex='-1' contenteditable onmousedown='onMouseDownRw(event);' onContextMenu='onContextMenuSpnRw(event,ctx);' >";
       
    }
       
    if (browseris.ie8standard)
            spandata
    +="\r";
       
    if(displayText !='')
            spandata
    +=STSHtmlEncode(displayText);
       
    else
            spandata
    +=STSHtmlEncode(key);
       
    if (browseris.ie8standard)
            spandata
    +="\r</span></span>\r";
       
    else
            spandata
    +="</span></span>";
       
    return spandata;
    }

    // **** CUSTOM FUNCTION ****
    function fixDataInIE9(data)
    {
       
    if(data.indexOf('<ArrayOfDictionaryEntry>') >= 0)
       
    {
            data
    = data.replace('<ArrayOfDictionaryEntry>', '<ArrayOfDictionaryEntry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema-instance\">');
       
    }
       
    return data;
    }

    After setting that up and publishing the master page I reloaded my site and had no problems saving people from the people picker. Heck of a lot easier than trying to get everyone to use firefox, or some kind of plugin.

    PS: I marked my code with // ** CUSTOM FUNCTION **


    Matt Olson, MS Content Development Specialist MCITP, MCTS


    • Edited by M_Olson Tuesday, April 17, 2012 7:28 PM
    • Proposed as answer by M_Olson Tuesday, April 17, 2012 7:29 PM
    Tuesday, April 17, 2012 7:12 PM
  • I tried M_Olsons's fix and I can confirm that it works! Thank you.

    This was the first fix for to work ... which means that one issue is resolved and only five more to go. Any progress on any of the other HTML5 related issues?

    1. Drag'n'drop web parts within a web part zone 

    2. Sub menu items, such as those in ' Send To' and 'Select display language', won't work (see the discussion behind first link for this one also)

    3. An issue with a create new list item AJAX dialog (I have not confirmed this one)

    4. Some UI issues with “New Item” dialog and minor issues with border in SharePoint 2010 ribbon (I have not confirmed this one)

    5. Problem with viewing error message after trying to delete a web part (I have not confirmed this one)

    Monday, April 23, 2012 12:11 PM
  • I can confirm that using Matt's fix and placing the script reference at the following location in the masterpage did the trick (for the most part) for me:

    </asp:Panel>
    <!-- Handle Search "enter" key and back button -->
    <input type="text" name="__spDummyText1" style="display:none;" size="1"/>
    <input type="text" name="__spDummyText2" style="display:none;" size="1"/>

    <!-- Fix for People Picker error in IE9 -->
    <script type="text/javascript" src="/_layouts/1033/entityeditor.ie9fix.js"></script>

    </form>

    it has to be in a specific place to work, In Matt's example in another discussion, he put his above the input types and below the </asp:Panel> to work. So you may have to play with its location on the masterpage.

    However, after it resolved. For me, it only works when clicking the browse directory icon and select a name from there. The logic that sharepoint has when you type in a last name and press enter it does not succeed in pulling back a full name match (as designed, which is fine) a message is displayed which I expect of "No exact match was found. Click the item(s) that did not resolve for more options." when you click on the last name you entered in the inputbox that had no match, Sharepoint will show you a popup box of the names close to the one you types in (with Remove and More names as other options), clicking one of those suggested names populates the input box with your full name selection, which it does.

    However, when you then click on "Check Permissions" there is no response to the button click. This also happens on "Grant Permissions" as well. At least for me.

    It is so close to fully working! Any one else have this same issue after using Matt's fix? Matt, you are a genius...I just wish I could figure out the rest on my own rather than bug everyone here...

    Thursday, May 17, 2012 6:12 PM
  • However, after it resolved. For me, it only works when clicking the browse directory icon and select a name from there. The logic that sharepoint has when you type in a last name and press enter it does not succeed in pulling back a full name match (as designed, which is fine) a message is displayed which I expect of "No exact match was found. Click the item(s) that did not resolve for more options." when you click on the last name you entered in the inputbox that had no match, Sharepoint will show you a popup box of the names close to the one you types in (with Remove and More names as other options), clicking one of those suggested names populates the input box with your full name selection, which it does.

    However, when you then click on "Check Permissions" there is no response to the button click. This also happens on "Grant Permissions" as well. At least for me.

    Salpsx,

    Thanks for the compliment!  This solution was built on top of other solutions in a combined effort of myself and other members of the MSDN/StackExchange community for other issues related to using an IE9/HTML5 master page for SharePoint 2010.  It is entirely possible there's a combination of things that are preventing you from having a fully functional people picker.  I know on my intranet site, this functionality is working perfectly (or pretty close).

    http://sharepoint.stackexchange.com/questions/27554/im-presence-icons-not-appearing-in-some-master-pages-ie9/27646#27646

    http://sharepoint.stackexchange.com/questions/31506/rich-text-fields-in-new-item-dialog-ie9/31595#31595

    http://sharepoint.stackexchange.com/questions/28499/context-menus-send-to-not-working-in-ie9

    If you look into those three links it might give you more insight on fixing your issues.  Or at least give you a jump-off point.

    - Matt


    Matt Olson, MS Content Development Specialist MCITP, MCTS

    Monday, May 21, 2012 4:10 PM
  • This is a great piece of work!  -  I'd like to incorporate it in my CodePlex project which is an HTML5 Master Page Template. http://sharepoint2010html5.codeplex.com/, but I'd like to make sure I give due credit.  Let me know how you would like to be recognized for this contribution.

    Thanks for your contribution here.  I hadn't bumped into this issue yet and was pleased to find someone had actually coded a workaround.


    Make it happen.

    Thursday, May 24, 2012 10:05 PM
  • This solution seems to work welll for me. However, I implemented it a little differently.

    I have a jvascript file already called from my Master Page (based on v4.master) and it wraps the function with the other script functions like this:

    ExecuteOrDelayUntilScriptLoaded($, "sp.js");
      $(document).ready(function () {
       // <YOUR CUSTOM JAVASCRIPT HERE>
      });

    Because my template is a sandbox solution, I retrieve it from the content database like this:

    <SharePoint:ScriptLinkID="ScriptLink3"language="javascript"name="~siteCollection/SiteAssets/js/pTechmaster.js"runat="server"/>

    I haven't added this javascript code to the template yet, but you can download the template and add it yourself and test it.  http://sharepoint2010html5.codeplex.com/


    Make it happen.

    Thursday, May 24, 2012 10:32 PM
  • Hi Matt,

    I may have spoken too quickly.  Here's what I am seeing with your solution.   I've implemented your JS override solution, and it works in some situations, but not in others.  Hopfully, the feedback will help the MS Team identify and craft a solution for the next service pack.

    When I "check permissions" on any list or library, as long as I don't exercize the pople picker or people checker, and I click "Check now", the solution works perfectly.  However, if I use either of those two functions, those functions work correctly, but the permission checker then fails with the same "namespace xsd" error.  Is there any more information that I can provide that would help identify and resolve this issue.  Lack of reliable IE9 and HTML5 compatibility is a "non-starter" for SharePoint.  Without it, SharePoint has a grim future.


    Make it happen.




    • Edited by DanKline Tuesday, May 29, 2012 1:16 AM
    Tuesday, May 29, 2012 1:13 AM
  • I have to say I still have not experienced those same issues.  I wonder if I left anything out of my list of fixes up there?  I'll look around a little and let you know.

    Matt Olson, MS Content Development Specialist MCITP, MCTS

    Tuesday, May 29, 2012 1:55 PM
  • Using Fiddler, I captured a successful session and a failed session.  I haven't been able to understand the reason for all the differences yet, but I can see that a lot of the External JS references are not included in the failed sessions.  I 'll keep looking at the result to see if I can determine the exact point of failure, but if you wish, I can send you the two session captures.  Send me a mail at dan-at-klines-dot-org and I'll reply and attach the two sessions.  This is frustrating.  I thought we had this one beat.  THanks for your attention to it.

    Dan


    Make it happen.

    Wednesday, May 30, 2012 1:54 AM
  • Hi Matt.  This was an interesting discovery  The first is the  successful capture.  The second is the failure.  Interestingly, the scond session appears to be reqcreating the HTMl with the DTD it expects rather than the DTD fromn the original(first) session.  That would seem to indicate that there is somewhere that this DTD is hard wired into the application.  If we could change the behavior so that it recreated the DTD from the original request, we may be able to fix this issue.  The generated DTD is not compatible with the HTML5 spec.

    ____________ Session 1 Capture  - successfullly returns premission chacks (Notice the DOCTYPE)

    <!DOCTYPE HTML>
    <html class="no-js ms-dialog ms-dialog-nr ms-dialog ms-dialog-nr" xmlns:o="urn:schemas-microsoft-com:office:office" __expr-val-dir="ltr" lang="en-us" dir="ltr">
    <head><meta http-equiv="X-UA-Compatible" content="IE=9" /><meta name="GENERATOR" content="Microsoft SharePoint" /><meta name="progid" content="SharePoint.WebPartPage.Document" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="Expires" content="0" /><title>
     
     Restricted Dates: Check Permissions

    </title><link rel="stylesheet" type="text/css" href="/_layouts/styles/dlgframe.css?rev=nFv%2BiaF39HSvTLAgsyDiTA%3D%3D"/>

    ____________ Session 2 Capture - Fails premission checks (Notice the DOCTYPE)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns:o="urn:schemas-microsoft-com:office:office" lang="en-us" dir="ltr" class="ms-dialog ms-dialog-nr">
    <head><meta name="GENERATOR" content="Microsoft SharePoint" /><meta name="progid" content="SharePoint.WebPartPage.Document" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="Expires" content="0" /><meta name="ROBOTS" content="NOHTMLINDEX" /><title>
     
     Error

    ________

    Hope this helps identify and resolve the issues.   HTML5 and CSS3 compatibility are going to be essential for WIN8 compatibility of SharePoint.

    Dan


    Make it happen.

    Wednesday, May 30, 2012 2:32 AM
  • Dan,

    Are you using IE + windows authentication?  I've seen login issues when dealing with master page, CSS and JS updates but they are usually in Firefox or some other browser.  IE will automatically log you in if you are in the right zone, so the permission thing should not be a problem.  Are you using the IE9 master page for both the system master page and the site master page?

    You should probably double-check to make sure all your relevant files are published (I've NEVER had a problem viewing changes in IE logged in as an administrator to the site, but it doesn't hurt) and approved.

    If your javascript is failing to load in the correct order (or at all) check your script references for your overrides.  I think I mentioned in one of my posts that I had to  use a mixture of techniques to get everything to load in the right order and at the right times.

    Following is some of my starter page, to show you exactly what I'm talking about:   

    <!-- all OOTB css -->
        <SharePoint:CssLink runat="server" Version="4"/>
        <SharePoint:Theme runat="server"/>
        
        <!-- page manager interacts with script and the sharepoint object model -->
        <SharePoint:SPPageManager runat="server"/>
        
        <!-- unified logging service -->
        <SharePoint:ULSClientConfig runat="server"/>
        
        <!-- identifies to scripting elements that this is a v4 master page. required for scrolling? -->
        <script type="text/javascript">
            var _fV4UI = true;
        </script>
        
        <!-- load SharePoint javascript -->
        <SharePoint:ScriptLink language="javascript" Defer="true" runat="server"/>
        <!-- The following script links fix some features that were broken by updating the master page
             to require IE9.
             See these StackExchange questions for more information:
             http://sharepoint.stackexchange.com/questions/28499/context-menus-send-to-not-working-in-ie9
             http://sharepoint.stackexchange.com/questions/27554/im-presence-icons-not-appearing-in-some-master-pages-ie9 -->
        <SharePoint:ScriptLink language="javascript" Defer="true" runat="server" Name="core.js"/>
        <SharePoint:ScriptLink language="javascript" Defer="true" runat="server" Name="core.ie9fix.js"/>
    
        <script type="text/javascript">
            /* commented for the sake of of using the SharePoint:ScriptLink above
            ExecuteOrDelayUntilScriptLoaded(function(){
                    document.write('<script type="text/javascript" src="/_layouts/1033/core.ie9fix.js"></' + 'script>');                
                }
                ,'core.js');*/
            ExecuteOrDelayUntilScriptLoaded(function(){
                    document.write('<script type="text/javascript" src="/_layouts/1033/init.ie9fix.js"></' + 'script>');                
                }
                ,'init.js');
            ExecuteOrDelayUntilScriptLoaded(function(){
                    document.write('<script type="text/javascript" src="/_layouts/1033/form.ie9fix.js"></' + 'script>');                
                }
                ,'form.js');
        </script>
    
        <!-- jQuery UI and MY CSS Links -->
        <SharePoint:CssRegistration name="/Style Library/myintranet/jquery-ui.css" After="corev4.css" runat="server"/>
        <SharePoint:CssRegistration name="/Style Library/myintranet/style-stretch.css" After="jquery-ui.css" runat="server"/>
    
        <!-- jQuery and MY scripts for tabbed web parts -->
        <script type="text/javascript" src="/Style Library/myintranet/scripts/jquery.min.js"></script>
        <script type="text/javascript" src="/Style Library/myintranet/scripts/jquery-ui-min.js"></script>
        <script type="text/javascript" src="/Style Library/myintranet/scripts/myintranet.js"></script>
        <script type="text/javascript">
            // script to fix dialog boxes.
            $(function (){
                removeCustomCSS();
            });
        </script>
        
        <!-- additional header delegate control -->
        <SharePoint:DelegateControl runat="server" ControlId="AdditionalPageHead" AllowMultipleControls="true"/>



    Matt Olson, MS Content Development Specialist MCITP, MCTS


    • Edited by M_Olson Wednesday, May 30, 2012 3:39 PM typos
    Wednesday, May 30, 2012 3:37 PM
  • Thanks Matt.  I hope understand what you are saying.  My masterpage works perfectly (as far as its been tested) except for a return from the peoplepicker function.  The dialog boxes even work correctly.  The only issue I've seen is the peoplepicker and  let me explain what I think I see happening so that you can understand it too. 

    If I open a list and from the ribbon select the List Permission Button, it correctly opens my permissions dialog styled as expected.  If I don't click either validation button (people picker or people checker) but just the "Check Now" button, the returned information is injected into the DOM correctly"

    Using Check now without peoplepicker

    If, however, I exercise either of those buttons, the user ID is validated correctly, but when the "Check Now" button is clicked the DOM is updated with much of the standard v4.Master markup (not the markup from the active masterpage).  That was what I was trying to demonstrate with my last post. 

    The result of the DOM changes, as expected, are fatal because the DTD and HTML rendering modes are changed. The result is the "xsd Namespace" error.  If you'd like to exchange information more easily, send me an email at dan-at-paratechnica-dot-com.  The masterpage template, including source, can be downloaded at http://sharepoint2010html5.codeplex.com/.  The javascript modifications have not been implemented pending a better solution.  Thanks - Dan.


    Make it happen.

    Wednesday, May 30, 2012 6:53 PM
  • That is very strange that the DTD, etc, are changed.  If the permission checking form and the rest of the site are using the same master page, that should not be different.  On my site this does not happen.  There are settings you can check which will ensure that even certain "special" pages get the custom master page applied, but I do not know them off the top of my head.  I will look into this and update my response if I find anything.

    Matt Olson, MS Content Development Specialist MCITP, MCTS

    Wednesday, May 30, 2012 7:37 PM
  • Thanks Matt.  I can send you the sesssion captures from Fiddler if they would be helpful.  I would expect that my current configuration is correct, because, as you cann see, even the modal dialog renders correctly.  It is only on re-rendering after validation or lookup ... or interestingly enough, if a second "check now" request is exercised.  I'll take another look and see if the re-render of the UserID as underlined is the real culprit.  Let me know what you can find from your end.

    It's not the underlying page that is erroring. Apparently it is the chkperm.aspx instance that is generated that contains the error. 

    chkperm.aspx

    This is where   the DTD is changed and the title is generated as "Error".

    Let me know if there is any way I can help with this.  I can host a LogMeIn Session if there is enough interest.


    Make it happen.

    Wednesday, May 30, 2012 8:35 PM
  • Dan,

    Are you sure the people-picker fixing javascript is loading AFTER entityeditor.js on the chkperm.aspx page? It also has to be loaded BEFORE all the function calls that the SharePoint page(s) call in order to make all the people picker stuff work.  I did a lot (a LOT) of different things trying to get this to work, including the ExecuteOrDelayUntilScriptLoaded function, and had no luck until I just stuffed the script tag into the following location (see also salpsx's response above):

    </asp:Panel>
    <!-- Fix for People Picker error in IE9 -->
    <script type="text/javascript" src="/_layouts/1033/entityeditor.ie9fix.js"></script>
    <!-- Handle Search "enter" key and back button -->
    <input type="text" name="__spDummyText1" style="display:none;" size="1"/>
    <input type="text" name="__spDummyText2" style="display:none;" size="1"/>
    
    </form>
    
    

    I had to do this because entityeditor.js does not have the event that sp.js, core.js and some of the other key SharePoint javascript libraries have that triggers the ExecuteOrDelayUntilScriptLoaded function.  My script was getting loaded in all kinds of random places, almost always *BEFORE* the entityeditor.js until I placed the script there.  That is the safest place for it in my experience.

    I understand the desire to glom all of your javascript into one file for speed and bandwidth reasons, but I think this really is one case where you have to bite the bullet and just put the stuff where it needs to go.


    Matt Olson, MS Content Development Specialist MCITP, MCTS

    Wednesday, May 30, 2012 9:22 PM
  • Thanks Matt.  I hadn't yet considered the possibility of modifying the files in the 14 directory.  The reason is that my project is a sandbox HTML5 masterpage template, which means I can't change anything in the filesystem.  The trick of overriding the javascript functions works brilliantly in many situations, but in the case you are describing, it would require a change to the code in the filesystem.

    What's your thoughts on this.  Is there a way to accomplish this in a sandbox?  I know my masterpage is being called because I am getting my styles and I'm hiding the Left Navigation Panel toggle button.  Is it possible to select the element using jQuery selectors and change it dynamically at document.ready?

    One of the main reasons for my project, in addition to opening up SharePoint 2010 to HTML5 and CSS3, was that as a sandbox solution, I could allow designers the liberty to get as crazy as they like without risking the stability of SharePoint.  And of course there is the additional benfits of compatibility of WIN8 apps written for HTML5 and CSS3.  I'd really like to make this happen.  I appreciate all your effort and would certainly appreciate your take on this idea.


    Make it happen.

    Wednesday, May 30, 2012 10:31 PM
  • Dan,

    In my solution no SharePoint files are modified, I just decided to store my scripts in the hive for the association factor.  You can keep your javascript files anywhere you want (use a CDN if you want!), but the place I described is where the script tag needs to be in the HTML.  I would say if you're using that method, you would definitely be able to keep it as a sandboxed solution.

    If you're selecting one of the dummytext elements I mentioned above, then yes,  you could use jQuery to do it, and you could have it load conditionally based on whether a script tag with entityeditor.js existed on the page (it doesn't get added on pages where there's no people picker).  If you're building a public site that might really be a good idea because it would save you some bandwidth in most cases.

    I think the sandboxed solution idea is pretty good, overall, because you can then pack everything up and deploy branding packages to customers or production sites.


    Matt Olson, MS Content Development Specialist MCITP, MCTS

    Thursday, May 31, 2012 12:56 AM
  • Thanks again Matt.  I'm not sure how, yet.  But I'm going to find an elegant solution to this.  I'm somewhat of a purist and like to maintain all of my JavaScript external to the HTML markup and as much as possible referenced in the head section. It should be possible if I can find a pattern to how and where entityeditor.js is called.  I did a search on chkperm.aspx and could not find a reference to that script. Where do you see the references to entityeditor.js?

    Make it happen.

    Thursday, May 31, 2012 2:18 AM
  • Dan,

    The references for entityeditor.js are actually in two places - the script tag and then some function calls in another location. I had to use Firebug and IE Dev tools to find the stuff, because it appears to be dynamically generated when the page loads.  At any rate good luck, but don't hurt yourself trying to bend SharePoint to your will on this one!

    - Matt


    Matt Olson, MS Content Development Specialist MCITP, MCTS

    Thursday, May 31, 2012 1:34 PM
  • Hi Matt,

    Try this on for size.  In order to call the code from any page, it needs to be referenced in the page instance at runtime.  Therefore, there needs to be a reference in the code similar to this:

    document.write('<script type="text/javascript" src="/_layouts/entityeditor.js?rev=1%2Fj%2Ba5PO0xZXnRjXxVHOkg%3D%3D"></' + 'script>');.

    which at document.ready injects the "<script type="text/javascript" src="/_layouts/entityeditor.js?rev=1%2Fj%2Ba5PO0xZXnRjXxVHOkg%3D%3D"></' + 'script>');."

    That being the case, unless I am oversimplifying it, at runtime(document.ready), I can check for the existence of the function:

    if(typeof ConvertEntityToSpan == 'function') {

    //the function exists, so it needs to be overridden

    < your override from above >

    }

    Using the same strategy, I should be able to define the other script functions that misbehave with HTML5 and override them with a small performance footprint.

    Would you like to work together on identifying all the "bad boys"?


    Make it happen.

    Saturday, June 2, 2012 7:15 PM
  • Yeah that did the trick for me also.  Obviously something I would assume they would roll into a CU in the near future.  Thanks for the help in the meantime.
    Friday, July 6, 2012 2:20 PM
  • Great fix.  I found using the LoadAfterUI="true" worked well.

     <SharePoint:Scriptlink runat="server" LoadAfterUI="true" OnDemand="false" Name="~sitecollection/Style Library/MyCompany/js/entityeditor.ie9fix.js" Language="javascript" />

    Friday, October 12, 2012 2:51 PM
  • Hi Ian. I'm implementing Matt's entityeditor.ie9fix.js solution for a sandbox solution so have to reference the Style Library too.

    If I use a ScriptLink control though, the fix no longer works (even with LoadAfterUI="true"). I assume this has to do with where the script is actually being ouput on the page. Can you please tell me exactly where in your masterpage that you placed the control?


    • Edited by Nick Larter Friday, October 19, 2012 9:16 AM
    Friday, October 19, 2012 9:15 AM
  • Does anyone know whether Microsoft has release a fix for this issue yet?
    Wednesday, November 7, 2012 11:17 AM
  • I'm pretty sure it's called "SharePoint 2013" heheh.

    Matt Olson, MS Content Development Specialist MCITP, MCTS

    Wednesday, November 7, 2012 3:59 PM
  • However when I use this script, it throws the script error "Unable to get value of the property 'length': object is null or undefined". Please anyone give solution for this error?
    • Proposed as answer by pradeeprajm Friday, March 22, 2013 4:28 AM
    • Unproposed as answer by pradeeprajm Friday, March 22, 2013 4:28 AM
    Friday, March 22, 2013 4:26 AM
  • which script, pradeep?  there are a few mentioned in this thread.

    Matt Olson, MS Content Development Specialist MCITP, MCTS

    Friday, March 22, 2013 1:55 PM

  • Hey!

    The problem is in the pickerdialog.master. As the People Picker is using the pickerdialog.master file, you need to add the following line in the head element.

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

    Find the pickerdialog.master file in C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS and make a backup.

    Now open it and insert the line at the start of the head element.

    &lt;head&gt;
    &lt;meta name="GENERATOR" content="Microsoft SharePoint" /&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" /&gt;
    ....
    &lt;/head&gt;

    This should solve the problem in People Picker.

    Cheers
    Wednesday, April 10, 2013 1:05 PM
  • Is there a hot fix from Microsoft yet?

    Paul

    Wednesday, April 10, 2013 2:16 PM
  • Morten Engvoldsen has good finding and I think that should work but I have not tired it.

    Amit

    Wednesday, April 10, 2013 2:55 PM
  • Would this work with other browsers as well?

    Matt Olson, MS Content Development Specialist MCITP, MCTS

    Wednesday, April 10, 2013 2:58 PM
  • The problem was with IE browser only and it was working fine with FF and Chrome. So it should work well in all browser now.


    Amit

    Wednesday, April 10, 2013 3:02 PM
  • I tried Morten's solution out on my dev site.  I removed the reference to my script from the site master page and inserted the line mentioned by Morten into the pickerdialog.master.  I then went to the permissions page for my site and tried to check my own permissions.  This did not work at all.  I still got the error message.  I think the pickerdialog.master is only for the dialog box that opens when you try to search for a person, as the people picker control itself does not appear to load in an iframe or anything like that, and the "check permissions" dialog uses the site master page.

    Did anybody else get this to actually work?  Maybe I missed a step somewhere.


    Matt Olson, MS Content Development Specialist MCITP, MCTS

    Wednesday, April 10, 2013 3:56 PM
  • M_Olson, I have tried using 'entityeditor.ie9fix.js' in site master page and the picker master page as well. But searching people editor address names and clicking ok throws script error as "Unable to get value of the property 'length': object is null or undefined".
    Wednesday, April 17, 2013 2:02 PM
  • Pradeeprajm,

    You do not need to change the picker master page to implement my solution.  The search should continue to work regardless because it opens in its own window and can thus use IE8 mode if it needs to.  I actually did discover a couple other changes, though, to improve the regular picker's functionality in IE9 master pages and I will post an update to this thread with the new javascript as well as on my stackexchange posts.  I will hopefully get to that later today.

    I'll also say there seem to be a number of javascript errors generated by SharePoint that you can just ignore if they don't seem to be hurting anything or stopping you from doing what you're trying to do.

    - Matt


    Matt Olson, MS Content Development Specialist MCITP, MCTS

    Wednesday, April 17, 2013 3:40 PM
  • Microsoft released the hotfix for the above issue. Please check the October 2012 CU (Hotfix: Article ID: 2687545 , November 15, 2012).
    Saturday, October 5, 2013 5:49 PM
  • Microsoft released the hotfix for the above issue. Please check the October 2012 CU (Hotfix: Article ID: 2687545 , November 15, 2012).
    Can you specify which part of the CU fixes this issue?  I just went through it and didn't see any reference to People Picker or HTML5 or IE9.

    Matt Olson, MS Content Development Specialist MCITP, MCTS

    Monday, October 7, 2013 2:10 PM
  • Can anyone confirm this hotfix?

    We have been encountering this issue as well. For branding purpose we need to update the Doc Standard from IE-8 to IE-9 and encountered many issues since then which has been documented already in this thread.

    As per a quick fix solution, since all our branding change are mainly reflected on our Front Page, for all other sub-sites we created a new master page which is a replicate of our original master page but uses IE-8 standards instead. So basically for all sub-sites which encountered a problem we used the IE-8 Standard Master page instead and lose all our HTML5/CSS3 enhancements.


    Artificial intelligence can never beat natural stupidity.

    Monday, October 7, 2013 2:31 PM
  • Matt,

    HotFix 2687545 is for fixing the target audience issue in the navigation.Sorry for the confussion.Below are the details

    Assume that you create a SharePoint group name that has a common string with other SharePoint groups. When you assign the group as the target audience to a navigation link, the group name cannot be resolved. Additionally, you receive the following error message:
    No exact match was found. Click the item(s) that did not resolve for more options.
    Finally, when you click the unresolved name, the possible match list is displayed in a text box unexpectedly.

    Waiting for the hotfix from Microsoft.

    Wednesday, October 9, 2013 4:32 AM
  • This works 90%. Thank you very much for this. I have issues with people clearing resolved entities. If you click one, which causes the whole entity to be selected and press 'delete', it will not clear that entity. And if you hit backspace, it will go to the last page. Did you also face these issues. I know this is an old post so no worries if it is simply 'NO'. Thanks again.
    Wednesday, February 12, 2014 9:27 AM
  • Me too have similar issues, raised at feedback and raised a ticket with MS, just tag that you can reproduce this issue, hoping to get a resolution.

    https://connect.microsoft.com/IE/feedback/details/806968/people-picker-issue-in-modal-dialog-box


    --Cheers

    Wednesday, February 19, 2014 7:04 AM
  • Hi there,

    I've spent a couple of hours investigating these IE9 issues for a customer.
    Maybe my findings can help you to achieve a better IE9 Compatibility for SharePoint 2010.


    The main issues when working in IE9 Document Mode are the following:

    1. JS XmlSerializer in IE9

    The JavaScript XmlSerializer in IE9 has some strange behavior. I don't know if this behavior was designed or not. However, in IE8 Document Mode it adds the required xsd-Namespace declaration, but in IE9 Document Mode it does not.

    If Microsoft does not provide a patch for IE9 including a fix for the XmlSerializer, you need the JS fixes proposed by Matt Olson if you want to solve it without touching OOTB JS files (which is definitely the way to go in productive environments).

    2. The way how sp.core.js accesses IFrames

    The other thing is, that the JavaScripts provided with SharePoint 2010 also contains "invalid" JavaScript code, f.e. use of "window.frames('someID')" which is not supported by IE. If you look into the IE reference provided by MS it should read "window.frames['someID']".

    You need to overwrite all those JS functions using "frames('someID')" to solve issues related to non-working popups (f.e. date picker issues and RTE issues) (again without touching the OOTB JS files)

    3. mergeAttributes() in IE9

    The mergeAttributes() JS method does not work the same than in IE8 Document Mode. When you use mergeAttribbutes() in IE8 Document Mode, all [Expandos] are copied to the target object. In IE9 some object members are not copied to the target object. Many Ribbon and ECB-related issues are caused by mergeAttributes().

    You can fix this issue by overriding the MergeAttributes() JS function which is located somewhere in the SP core JS files (don't remember where it was...). Don't touch the OOTB JS files.

    4. JS Errors when dialog windows are closed through "Cancel" Button in Ribbon

    If you use the "Cancel" Command in the ribbon, the ribbon command JS sends up a message to it's root object. On the way up there, the IFrame gets disposed and the SP and CUI object namespaces get disposed too, but only in IE9 Document Mode. In IE8 Mode, the SP and CUI namespaces somehow remain and the JS code completes without errors.

    I didn't find a way to fix this yet. But in my opinion this has low priority, since it only occurs when you are canceling the dialog.

    If you can solve those issues, SharePoint 2010 works pretty good in IE9 Document mode (maybe better than in Firefox).

    Maybe those JS fixes can be deployed together to a delegate control instead of putting them to a master page... This would allow you to install + manage IE9 compatibility as a feature. I havn't tried that yet.

    Thursday, March 13, 2014 6:30 PM
  • Resolve the this IE9/IE10/IE11 issue. Follow the below Steps

    Easy steps to solve this issue For Sharepoint 2010.

    1. Go to Central administration.

    2. In Application Management --> Manage Web Application --> Select our Web application Port.

    3. After selection, click on General Settings Tab (Ribbon Tab)

    4. After Clicking General settings ---> Master Page Settings For Application_Layouts Pages  this settings radio button selects as  NO.

    5. Follow these steps your issue has been resolved.

    Thank you,

    Mahendra Nikam


    Friday, June 6, 2014 6:45 AM
  • Mahendra,

    We were able to duplicate the problem in a lower environment.  

    In troubleshooting, we implemented the change that you proposed and did an IISRESET afterwards.  This did not appear to resolve the issue.   The issue persisted with IE10.  Although we are not convinced that we can produce the problem in IE9 and IE11.


    if my post is helpful - please click on the green arrow. (please excuse, in advance, any perceived sarcasm/humor - as I often forget it does not translate through text) :)

    Monday, June 9, 2014 7:33 PM
  • Greg,

    Sorry for delay,

    I have to face the same issue for IE9/IE10/IE11, and I make the same changes in settings and its working fine for me.

    Friday, June 20, 2014 5:30 AM
  • I noticed, It is resolved in 10 Jun, 2014 Hotfix. 

    Wednesday, July 30, 2014 9:19 AM