ICEfaces
  1. ICEfaces
  2. ICE-7571

tabSet looses its style when tabs are added and then removed in IE

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.0.RC1
    • Fix Version/s: 3.0
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      IE
    • Assignee Priority:
      P1

      Description

      In the Williams app if they add two blank tabs and then try and remove these tabs, upon removing the second tab, the tabSet looses its style and functionality. A browser refresh fixes the issue.

      Steps to reproduce in POC:
       - Load POC in IE
       - Click on the "+" tab to add two new blank tabs.
       - Click on the close icon for the last tab. Tab is removed, no issue seen.
       - Click on the close icon for the next tab. Tab is not removed and looses the content of the tab. Clicking on other tabs does not change the tab.
       - Refresh browser, everything is back to normal.

        Activity

        Hide
        Ted Goddard added a comment -

        good:

        j_idt101=j_idt101
        ice.window=mkgw5foeh0
        ice.view=vyb1o8d6
        icefacesCssUpdates=
        javax.faces.ViewState=-1012878574391410787%3A2334366390968594050
        j_idt101%3A_t103=j_idt101%3A_t103
        javax.faces.source=j_idt101
        javax.faces.partial.event=click
        javax.faces.partial.execute=%40all
        javax.faces.partial.render=%40all
        ice.window=mkgw5foeh0
        ice.view=vyb1o8d6
        ice.focus=j_idt101%3A_t103
        ice.event.target=
        ice.event.captured=j_idt101
        ice.event.type=onclick
        ice.event.alt=false
        ice.event.ctrl=false
        ice.event.shift=false
        ice.event.meta=undefined
        ice.event.x=316
        ice.event.y=54
        ice.event.left=false
        ice.event.right=false
        ice.submit.type=ice.s
        ice.submit.serialization=form
        javax.faces.partial.ajax=true

        bad:

        j_idt95=j_idt95
        ice.window=mkgw5foeh0
        ice.view=vyb1o8d6
        icefacesCssUpdates=
        j_idt95%3A_t97=j_idt95%3A_t97
        javax.faces.source=j_idt95
        javax.faces.partial.event=click
        javax.faces.partial.execute=%40all
        javax.faces.partial.render=%40all
        ice.window=mkgw5foeh0
        ice.view=vyb1o8d6
        ice.focus=j_idt101%3A_t103
        ice.event.target=
        ice.event.captured=j_idt95
        ice.event.type=onclick
        ice.event.alt=false
        ice.event.ctrl=false
        ice.event.shift=false
        ice.event.meta=undefined
        ice.event.x=238
        ice.event.y=55
        ice.event.left=false
        ice.event.right=false
        ice.submit.type=ice.s
        ice.submit.serialization=form
        javax.faces.partial.ajax=true

        Show
        Ted Goddard added a comment - good: j_idt101=j_idt101 ice.window=mkgw5foeh0 ice.view=vyb1o8d6 icefacesCssUpdates= javax.faces.ViewState=-1012878574391410787%3A2334366390968594050 j_idt101%3A_t103=j_idt101%3A_t103 javax.faces.source=j_idt101 javax.faces.partial.event=click javax.faces.partial.execute=%40all javax.faces.partial.render=%40all ice.window=mkgw5foeh0 ice.view=vyb1o8d6 ice.focus=j_idt101%3A_t103 ice.event.target= ice.event.captured=j_idt101 ice.event.type=onclick ice.event.alt=false ice.event.ctrl=false ice.event.shift=false ice.event.meta=undefined ice.event.x=316 ice.event.y=54 ice.event.left=false ice.event.right=false ice.submit.type=ice.s ice.submit.serialization=form javax.faces.partial.ajax=true bad: j_idt95=j_idt95 ice.window=mkgw5foeh0 ice.view=vyb1o8d6 icefacesCssUpdates= j_idt95%3A_t97=j_idt95%3A_t97 javax.faces.source=j_idt95 javax.faces.partial.event=click javax.faces.partial.execute=%40all javax.faces.partial.render=%40all ice.window=mkgw5foeh0 ice.view=vyb1o8d6 ice.focus=j_idt101%3A_t103 ice.event.target= ice.event.captured=j_idt95 ice.event.type=onclick ice.event.alt=false ice.event.ctrl=false ice.event.shift=false ice.event.meta=undefined ice.event.x=238 ice.event.y=55 ice.event.left=false ice.event.right=false ice.submit.type=ice.s ice.submit.serialization=form javax.faces.partial.ajax=true
        Hide
        Ted Goddard added a comment -

        Mainly the javax.faces.ViewState is missing from the failed tab removal click.

        Show
        Ted Goddard added a comment - Mainly the javax.faces.ViewState is missing from the failed tab removal click.
        Hide
        Ted Goddard added a comment -

        On chrome we have in the console:

        update["javax.faces.ViewState"]: 7802710141722433324:1898180188233697418....
        extension
        bridge.js.jsf:1214[window] append missing "javax.faces.ViewState" input element to form["j_idt26"]
        bridge.js.jsf:1214[window] append missing "javax.faces.ViewState" input element to form["j_idt91"]

        wherease on IE we have:

        update["javax.faces.ViewState"]: -4025001483001829768:9002363014726707029....
        eval
        extension

        Show
        Ted Goddard added a comment - On chrome we have in the console: update ["javax.faces.ViewState"] : 7802710141722433324:1898180188233697418.... extension bridge.js.jsf:1214 [window] append missing "javax.faces.ViewState" input element to form ["j_idt26"] bridge.js.jsf:1214 [window] append missing "javax.faces.ViewState" input element to form ["j_idt91"] wherease on IE we have: update ["javax.faces.ViewState"] : -4025001483001829768:9002363014726707029.... eval extension
        Hide
        Ted Goddard added a comment -

        IE seems to be satisfied by the following "no-op"

        +++ core/src/main/javascript/application.js (working copy)
        @@ -308,6 +308,9 @@
        try {
        var source = e.source;
        var form = formOf(source);
        + if (form.id)

        { + form = document.getElementById(form.id); + }

        isICEfacesEvent = form['ice.view'] || form['ice.window'];
        } catch (ex) {

        This allows the form to be detected better and the fact that it is an ICEfaces event to be detected. Perhaps the page modifications by the tabset created DOM instances that were not attached to the live browser DOM causing requests for named elements to fail.

        Show
        Ted Goddard added a comment - IE seems to be satisfied by the following "no-op" +++ core/src/main/javascript/application.js (working copy) @@ -308,6 +308,9 @@ try { var source = e.source; var form = formOf(source); + if (form.id) { + form = document.getElementById(form.id); + } isICEfacesEvent = form ['ice.view'] || form ['ice.window'] ; } catch (ex) { This allows the form to be detected better and the fact that it is an ICEfaces event to be detected. Perhaps the page modifications by the tabset created DOM instances that were not attached to the live browser DOM causing requests for named elements to fail.
        Hide
        Ted Goddard added a comment -

        This is fixed in my local copy of the test application. Please close if verified in the main application.

        Show
        Ted Goddard added a comment - This is fixed in my local copy of the test application. Please close if verified in the main application.
        Hide
        Ken Fyten added a comment -

        Confirmed working in main application.

        Show
        Ken Fyten added a comment - Confirmed working in main application.
        Hide
        Ted Goddard added a comment -

        The following is believed to be the mobile device problem:

        load mediacast, click on a photo
        click home (in the case of the bug, home must be pressed twice to work)
        on the home page press the browser reload

        Show
        Ted Goddard added a comment - The following is believed to be the mobile device problem: load mediacast, click on a photo click home (in the case of the bug, home must be pressed twice to work) on the home page press the browser reload
        Hide
        Mircea Toma added a comment -

        Test if found form still exists in the document since the form element could have been detached by the update. Force then an exception that in the end makes filterICEfacesEvent() function to execute the passed function for the "success" submit event.

        Show
        Mircea Toma added a comment - Test if found form still exists in the document since the form element could have been detached by the update. Force then an exception that in the end makes filterICEfacesEvent() function to execute the passed function for the "success" submit event.
        Hide
        Ted Goddard added a comment -

        It looks like this actually reverted to the behavior that breaks on iOS Safari; now investigating the following:

        if (form && form.id) {
        isICEfacesEvent = form['ice.view'] || form['ice.window'];
        if (!isICEfacesEvent)

        { form = document.getElementById(form.id); isICEfacesEvent = form['ice.view'] || form['ice.window']; }

        }

        There may be a problem with the above on IE since the original form reference is corrupt; IE testing will show this.

        Show
        Ted Goddard added a comment - It looks like this actually reverted to the behavior that breaks on iOS Safari; now investigating the following: if (form && form.id) { isICEfacesEvent = form ['ice.view'] || form ['ice.window'] ; if (!isICEfacesEvent) { form = document.getElementById(form.id); isICEfacesEvent = form['ice.view'] || form['ice.window']; } } There may be a problem with the above on IE since the original form reference is corrupt; IE testing will show this.

          People

          • Assignee:
            Mircea Toma
            Reporter:
            Arran Mccullough
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: