Topic
  • 5 replies
  • Latest Post - ‏2013-02-05T18:29:58Z by SystemAdmin
SystemAdmin
SystemAdmin
6195 Posts

Pinned topic Disappearing component data

‏2012-12-05T18:22:15Z |
I am experiencing disappearing component data after the RUI Handler page is rendered and to make matters worse, it is intermittent. I have noticed that if I leave my mouse off the browser while the browser is being rendered sometimes it fully renders the page with the data, sometimes not. Also, after being rendered, if I move the mouse into the page or (sometimes) over an input-capable textfield, other non-input-capable textfields disappear. Scrolling to the bottom of the browser page seems to get the component data to reappear.

Application architecture follows a design based upon a Rich UI handler with widgets representing the current page added as a child component which I often see as the approach recommended for page navigation.

See attached screen shots for 'before' and 'after' views to see the impact on a datagrid.

I see this problem when developing and running inside the IDE and while debugging in a browser window as well as when deployed to Tomcat (6.32) running on the iSeries machine.

IDE Version : IBM Rational® Business Developer™ Version: 8.5 Build ID: RBDO85-I20120604_2101
Browsers : Windows Explorer 8 and Firefox 16.0.2
O/S : Windows XP, Windows 7

Attachments

Updated on 2013-02-05T18:29:58Z at 2013-02-05T18:29:58Z by SystemAdmin
  • SystemAdmin
    SystemAdmin
    6195 Posts

    Re: Disappearing component data

    ‏2013-01-11T17:12:47Z  
    A PMR has been opened which has been escalated to IBM development team.
  • SystemAdmin
    SystemAdmin
    6195 Posts

    Re: Disappearing component data

    ‏2013-01-31T19:43:10Z  
    A PMR has been opened which has been escalated to IBM development team.
    Attached is a Word doc of screen shots showing the DOJO component display anomaly before the IBM supplied remedy and screen shots showing the component behavior after the remedy was applied.

    While the problem has been resolved the implications are that each PC's IE9 may have to be reconfigured using Microsoft Management Console.

    Beyond that, it means deploying FireFox to each PC.
  • dan_darnell
    dan_darnell
    973 Posts

    Re: Disappearing component data

    ‏2013-01-31T23:53:28Z  
    Attached is a Word doc of screen shots showing the DOJO component display anomaly before the IBM supplied remedy and screen shots showing the component behavior after the remedy was applied.

    While the problem has been resolved the implications are that each PC's IE9 may have to be reconfigured using Microsoft Management Console.

    Beyond that, it means deploying FireFox to each PC.
    Not sure, but can't you use DOCTYPE and meta tags in your page to make IE play nice?

    http://hsivonen.iki.fi/doctype/

    --Dan
  • SystemAdmin
    SystemAdmin
    6195 Posts

    Re: Disappearing component data

    ‏2013-02-05T16:14:53Z  
    Not sure, but can't you use DOCTYPE and meta tags in your page to make IE play nice?

    http://hsivonen.iki.fi/doctype/

    --Dan
    Update:

    As stated, the solution presented above relies upon using Microsoft Management Console to change IE settings. While the solution works to prevent IE9 from reverting to IE7 mode, the fix applies only to that machine. In addition, it could interfere with IE when using other applications. In short, it isn't the most ideal of solutions.

    What follows is a solution that forces the browser to behave in a manner compatible with the EGL application and its DOJO components while using iFrames. (kudos to Dan Darnell for this idea) The HTML page-specific setting will be in effect only during the run-life of the application.

    Shown here is the meta tag entry forcing IE9 to stay in IE9 mode.

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


    This variation also works :
    
    <meta http-equiv=
    "X-UA-Compatible" content=
    "IE=IE9">
    


    Here's what Microsoft says about each of the two.

    Edge mode tells Internet Explorer to display content in the highest mode available. With Internet Explorer 9, this is equivalent to IE9 mode. If a future release of Internet Explorer supported a higher compatibility mode, pages set to edge mode would appear in the highest mode supported by that version. Those same pages would still appear in IE9 mode when viewed with Internet Explorer 9.

    IE9 mode provides the highest support available for established and emerging industry standards, including the HTML5 (Working Draft), W3C Cascading Style Sheets Level 3 Specification (Working Draft), Scalable Vector Graphics (SVG) 1.0 Specification, and others. ( Note: IE 9 does not support CSS3 animations )

    I suppose that last part means that if you want fire or rotating fonts as shown in an old IBM commercial, you're out of luck.

    What follows is an HTML page that simply acts as a container within which the EGL application is presented within an iFrame. This allows the meta tag solution to be employed.

    
    <html> <head> <meta http-equiv=
    "X-UA-Compatible" content=
    "IE=edge">   <SCRIPT type=
    "text/javascript">   
    //**  
    //* This function is fired on the onLoad event.  The required URL is assigned to  
    //* the 'src' parameter of the iframe.  The meta tag entry places the browser 
    //* into IE9 compatibility mode. 
    //*     <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    //* Without this meta definition, IE9 will refert back to IE7 mode. As a result 
    //* some of the DOJO components will not be rendered on the page and are only 
    //* seen when the mouse is moved over the component. At that time all other 
    //* DOJO components that are also not being rendered are then made visible as  
    //* well, but only for a moment.  Move the mouse and they disappear again. function load() 
    {   
    //This sets the http string to the value required to launch the EGL application var theURL = 
    "http://machine:port/ApplicationDir/HomePage-en_US.html" 
    //Construct the frame with the new URL assigned to the src element var frameSrc = 
    '<frame src=' +
    '"'+ theURL +
    '"' +
    ' >'; 
    //Do the assignment document.getElementById(
    'FRAME').src = frameSrc ; 
    }     </script> </head>   <body onload=
    "load();">   </body>   <iframe   src=
    "" name=
    "FRAME" id=
    "FRAME"  width=
    "100%" height=
    "1450"  frameborder=0 scrolling=
    "no" >  </iframe>   </html>
    


    That about does it.
  • SystemAdmin
    SystemAdmin
    6195 Posts

    Re: Disappearing component data

    ‏2013-02-05T18:29:58Z  
    Update:

    As stated, the solution presented above relies upon using Microsoft Management Console to change IE settings. While the solution works to prevent IE9 from reverting to IE7 mode, the fix applies only to that machine. In addition, it could interfere with IE when using other applications. In short, it isn't the most ideal of solutions.

    What follows is a solution that forces the browser to behave in a manner compatible with the EGL application and its DOJO components while using iFrames. (kudos to Dan Darnell for this idea) The HTML page-specific setting will be in effect only during the run-life of the application.

    Shown here is the meta tag entry forcing IE9 to stay in IE9 mode.

    <pre class="jive-pre"> <meta http-equiv= "X-UA-Compatible" content= "IE=edge"> </pre>

    This variation also works :
    <pre class="jive-pre"> <meta http-equiv= "X-UA-Compatible" content= "IE=IE9"> </pre>

    Here's what Microsoft says about each of the two.

    Edge mode tells Internet Explorer to display content in the highest mode available. With Internet Explorer 9, this is equivalent to IE9 mode. If a future release of Internet Explorer supported a higher compatibility mode, pages set to edge mode would appear in the highest mode supported by that version. Those same pages would still appear in IE9 mode when viewed with Internet Explorer 9.

    IE9 mode provides the highest support available for established and emerging industry standards, including the HTML5 (Working Draft), W3C Cascading Style Sheets Level 3 Specification (Working Draft), Scalable Vector Graphics (SVG) 1.0 Specification, and others. ( Note: IE 9 does not support CSS3 animations )

    I suppose that last part means that if you want fire or rotating fonts as shown in an old IBM commercial, you're out of luck.

    What follows is an HTML page that simply acts as a container within which the EGL application is presented within an iFrame. This allows the meta tag solution to be employed.

    <pre class="jive-pre"> <html> <head> <meta http-equiv= "X-UA-Compatible" content= "IE=edge"> <SCRIPT type= "text/javascript"> //** //* This function is fired on the onLoad event. The required URL is assigned to //* the 'src' parameter of the iframe. The meta tag entry places the browser //* into IE9 compatibility mode. //* <meta http-equiv="X-UA-Compatible" content="IE=edge"> //* Without this meta definition, IE9 will refert back to IE7 mode. As a result //* some of the DOJO components will not be rendered on the page and are only //* seen when the mouse is moved over the component. At that time all other //* DOJO components that are also not being rendered are then made visible as //* well, but only for a moment. Move the mouse and they disappear again. function load() { //This sets the http string to the value required to launch the EGL application var theURL = "http://machine:port/ApplicationDir/HomePage-en_US.html" //Construct the frame with the new URL assigned to the src element var frameSrc = '<frame src=' + '"'+ theURL + '"' + ' >'; //Do the assignment document.getElementById( 'FRAME').src = frameSrc ; } </script> </head> <body onload= "load();"> </body> <iframe src= "" name= "FRAME" id= "FRAME" width= "100%" height= "1450" frameborder=0 scrolling= "no" > </iframe> </html> </pre>

    That about does it.
    Correction:

    The code presented shows a '<frame src=' construct being placed inside an iFrame. Clearly an error.

    This is the proper assignment of the URL to the iFrame's src:

    document.getElementById('FRAME').src = theURL ;
    


    Apologies.
    Updated on 2014-03-25T04:36:16Z at 2014-03-25T04:36:16Z by iron-man