Andrew, yes - using setTimeout solves the problem. Just put:

        if (_agent && _agent.isIE)
            window.setTimeout("document.getElementById('" + refocusId + "').focus()", 1000);
        else
            activeNode.focus();

Btw I noticed a similar problem today in a different context. I had a popup list (non a tr:panelPopup) to be shown as a suggestion list upon clicking a link. All done through PPR and I needed to call focus() to preselect the first item as well as catching onBlur to hide the list.
Once again, no problems on FF, while on IE this call returned ok, but the very first time no popup was shown. Once more - commenting out the focus call solved the problem. But even doing it a bit later through setTimeout was ok.

-- Renzo

Andrew Robinson wrote:
I am wondering if this ought to be called in a window setTimeout. Any
way you can modify the code locally and attempt to see if that helps?

On Fri, Feb 22, 2008 at 1:30 AM, Renzo Tomaselli
<[EMAIL PROTECTED]> wrote:
  
 Yes, I followed the PPR response handling on FF/Firebug - but there all is
ok.
 Then I investigated on IE 6/7 by means of placing alerts everywhere. There
is no return from calling focus(), although no errors are reported - even on
IE 7 with IE developer toolbar activated.

 -- Renzo



 Andrew Robinson wrote:
 Hmmm, you say this is during the PPR application?

I think there is a bug in IE that causes exceptions to be thrown if
setFocus is called from the PPR "thread"

-Andrew

On Thu, Feb 21, 2008 at 3:04 AM, Renzo Tomaselli
<[EMAIL PROTECTED]> wrote:


 Hi, I have a panelPopup containing a number of links with
 partialSubmit="true". The panel itself is enclosed into a
 panelGroupLayout bound to a bean.
 This binding allows to define the enclosing panel as a PPR target
 through addPartialTarget(), no matter which links triggers it.
 So the overall structure is roughly like this:

 <tr:panelGroupLayout id="modalWrapper" binding="#{bean.panel}">
 <tr:panelPopup id="modal" position="centered" modal="true">
 <tr:commandLink id="next" action=""
 partialSubmit="true"
 ...

 all of this works fine on FF. However it does not on IE 6/7. The very
 first time the panel is created, but any following click on links does
 not refresh panel contents.
 After some js debugging - I noticed that in Page.js, method
 _handlePprResponseFragment() - there is a focus action on the link
 itself (which is recorded as being active):

 if (refocusId) {
 activeNode = doc.getElementById(refocusId);
 if (activeNode && activeNode.focus) {
 activeNode.focus(); // !!!!!

 on IE there is no return from focus(), so that the rest of the panel
 fragments are not rendered. No errors, though.
 If I comment out the focus() call, everything works as expected.

 -- Renzo






    


  

Reply via email to