Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: EE-2.0.0.GA, 2.0.2
-
Fix Version/s: 2.1-Beta, EE-2.0.0.GA_P01
-
Component/s: ICE-Components
-
Labels:None
-
Environment:IE7, IE8, IE9
-
Assignee Priority:P2
Description
The sample application has it´s own message handling implementation which provides a correlation between the user interface and data transfer objects. It uses composite components to detect validation errors and then display them on the offending component using a panelToolTip. This works when outside of an ice:dataTable but not within and a javascript error is thrown. For example:
<cc:validationGroup>
<ice:dataTable>
<ice:column>
<f:facet name="header">
<ice:outputText id="column3" value="#{msgs_validation.city}" />
</f:facet>
<cc:tooltip for="city">
<ice:inputText id="city" value="#{partner.city}" valueChangeListener="#{validationCtrl.removeCurrentMessage}" onkeyup="iceSubmitPartial(form,this,event);"/>
</cc:tooltip>
</ice:column>
</ice:dataTable>
</cc:validationGroup>
This works in FF and but not in versions of IE. In IE7/8, the offending field is highlighted in yellow but the tool tip is not displayed and following javascript error is thrown:
Message: Object required
Line: 1
Char: 77237
Code: 0
URI: http://localhost:8280/riweb-presentation/javax.faces.resource/icefaces-compat.js.xhtml;jsessionid=F8670CC02B5CE698C8B8C0BB6AD4E0F5
In IE9, the validation error does not even occur in order to reproduce the issue and the following javascript error is thrown:
SCRIPT5007: Unable to get value of the property 'parentNode': object is null or undefined icefaces-compat.js.xhtml, line 1 character 77237
Both errors correspond to the following code in icefaces-compat.js:
if(element.parentNode){do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);}return new Element.Offset(valueL,valueT);}
<cc:validationGroup>
<ice:dataTable>
<ice:column>
<f:facet name="header">
<ice:outputText id="column3" value="#{msgs_validation.city}" />
</f:facet>
<cc:tooltip for="city">
<ice:inputText id="city" value="#{partner.city}" valueChangeListener="#{validationCtrl.removeCurrentMessage}" onkeyup="iceSubmitPartial(form,this,event);"/>
</cc:tooltip>
</ice:column>
</ice:dataTable>
</cc:validationGroup>
This works in FF and but not in versions of IE. In IE7/8, the offending field is highlighted in yellow but the tool tip is not displayed and following javascript error is thrown:
Message: Object required
Line: 1
Char: 77237
Code: 0
URI: http://localhost:8280/riweb-presentation/javax.faces.resource/icefaces-compat.js.xhtml;jsessionid=F8670CC02B5CE698C8B8C0BB6AD4E0F5
In IE9, the validation error does not even occur in order to reproduce the issue and the following javascript error is thrown:
SCRIPT5007: Unable to get value of the property 'parentNode': object is null or undefined icefaces-compat.js.xhtml, line 1 character 77237
Both errors correspond to the following code in icefaces-compat.js:
if(element.parentNode){do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element);}return new Element.Offset(valueL,valueT);}
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
The JS error is triggered when the 'onmouseout' callback is executed after the DOM update received erased the tooltip element from the document.
The fix changed the callback to test for the existence of the tooltip before hiding the tooltip element on mouse out.