• Bug in Domino Pickers in Internet Explorer 9

    By F van der Linden 1 decade ago

    Today I run in a problem at a customer site. They run Domino 8.5.2 and are not (yet) intending to upgrade to 8.5.3

    I can reproduce it in the demo database delivered with the 8.5.2 Extension Library Codestream.
     

    Reproduce

    Go the 'Domino_Pickers.xsp' in the demo database in a real IE9 browser

      IE9 modus

    Press the picker button

    The page underlay will be visible, because the form is not clickable anymore.

    In my Debug window I get the errors.

    Error_EI9

    I searched the internet, and saw that it something to do with '_destroyAll' method

    http://old.nabble.com/Problems-creating-dynamic-Dialogs-td27455324.html

    I tried it in the demo database of the 8.5.3 code stream. And there it's works well.

    • This seems to be a dojo problem,right?

      By Philippe Riand 1 decade ago

      If so, does that work with 853? And do you know the fix we should apply to the 852 classes to make it work?

      • It is a dojo.1.4.3 problem

        By F van der Linden 1 decade ago

        I did some debugging an found the problem in the popup.js file, located in the directory 'data\domino\js\dojo-1.4.3\dijit\_base'.

        After I found the problem I tried the same database in IE9 on a 8.5.3 server. And the problem was gone.

        Then I replaced the popup.js and popup.js.gz of dojo 1.4.3. with the same files from dojo 1.5.1.

        Reboot the server and reloaded the webpage.

        And in IE9 the dialog is working, finally.

        • PMR has been submitted to IBM

          By F van der Linden 1 decade ago

          I have submitted a PMR to IBM for this issue.

           

          • Follow up

            By Darin Egan 1 decade ago

             

            Frank,
            
             
            
            You are absolutely correct that the issue you have encountered is in fact a bug with the Dojo Core.
            
            However, just to provide some background first around this issue. IE9 was first officially supported by Dojo release version 1.6.1 and later.
            
            <a href="http://livedocs.dojotoolkit.org/releasenotes/1.6#browser-support">http://livedocs.dojotoolkit.org/releasenotes/1.6#browser-support</a></div>
            
            &nbsp;
            
            The issue you encountered with popup.js was fixed in the 1.6.1 release for IE9. When we were working on the 8.5.3 release of XPages this same issue was encountered also and I requested to the Dojo team that the same fix from 1.6 be back-ported for 1.5. This is why the issue does not occur in Dojo 1.5.1 (released with XPages 8.5.3).
            
            &nbsp;
            
            In relation to you particular issue, IE9 support is only available in Dojo 1.6.1 and later. However the fix I requested was relatively small and you can view the public changeset here:
            
            <a href="http://bugs.dojotoolkit.org/changeset/23718/dojo/dijit/trunk/_base/popup.js">http://bugs.dojotoolkit.org/changeset/23718/dojo/dijit/trunk/_base/popup.js</a></div>
            
            &nbsp;
            
            Perhaps you could apply the fix itself for your customer and this should unblock you.
            
            &nbsp;
            
            I hope this is of some help.
            
            &nbsp;
            
            Darin.
            
            &nbsp;
            
            • You could patch the client side script at runtime

              By Lorcan McDonald 1 decade ago

               

              As Javascript is such a dynamic language it may be possible to patch this in your app rather than having to change the&nbsp;version of dojo that comes with Domino.
              
              &nbsp;
              
              The following is an example of how you could patch the functionality of&nbsp;dijit._frames.pop() (the function that contains the problem you&#39;re seeing).&nbsp;This is similar to the way function decorators work in Python, though without&nbsp;the convenient syntax.
              
              &nbsp;
              
              (function(){// This will prevent local variables such as dojoPopFunc from
              
              &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// polluting the global namespace
              
              &nbsp;
              
              &nbsp; &nbsp; var dojoPopFunc = dijit._frames.pop;// Save the dojo version of pop in&nbsp;
              
              &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// the enclosed scope
              
              &nbsp;
              
              &nbsp; &nbsp; dijit._frames.pop = function(){
              
              &nbsp; &nbsp; &nbsp; &nbsp;// dojo._frames.pop doesn&#39;t take any arguments but using apply() like
              
              &nbsp; &nbsp; &nbsp; &nbsp;// this is a useful pattern if you needed to override other core
              
              &nbsp; &nbsp; &nbsp; &nbsp;// functions
              
              &nbsp; &nbsp; &nbsp; &nbsp; var iframe = dojoPopFunc.apply(this, arguments);
              
              &nbsp;
              
              &nbsp; &nbsp; &nbsp; &nbsp;// My guess is the IE9 is handling z-index differently than earlier
              
              &nbsp; &nbsp; &nbsp; &nbsp;// versions of Internet Explorer, you may need to try some other style
              
              &nbsp; &nbsp; &nbsp; &nbsp;// fixes to resolve your issue.
              
              &nbsp; &nbsp; &nbsp; &nbsp; dojo.query(iframe).style(&#39;z-index&#39;, &#39;10&#39;);
              
              &nbsp; &nbsp; }
              
              })();
              
              &nbsp;
              
    • PMR has changed to SPR

      By F van der Linden 1 decade ago

      So it will forwarded to the designteam