IE兼容模式会在XPages DateTimePicker中产生问题

时间:2012-05-21 13:14:05

标签: xpages

Per Henrik建议修复IE中带有xPage扩展名的奇怪的拉伸对话框问题。

Fixing "stretched" XPage extension library Name Picker in IE?

这很有效并解决了这个问题。但它会导致DateTimePicker出现问题。在兼容模式下,DateTimePicker的日历会显示但会立即关闭。我在这里放了一个演示:

 <xp:this.beforeRenderResponse>
    <![CDATA[#{javascript:  if (context.getUserAgent().isIE()) {
    var response = facesContext.getExternalContext().getResponse();
    response.setHeader("X-UA-Compatible", "IE=8");
}}]]>
</xp:this.beforeRenderResponse>




<xp:inputText id="inputText1">
    <xp:dateTimeHelper id="dateTimeHelper1"></xp:dateTimeHelper>
    <xp:this.converter>
        <xp:convertDateTime type="date"></xp:convertDateTime>
    </xp:this.converter>
</xp:inputText>  

3 个答案:

答案 0 :(得分:3)

我偶然发现了同样的问题。我的修复程序受a blog post by Paul Withers on the subject启发,涉及使用Dojo DateTextBox和TimeTextBox进行IE浏览。

我使用标准日期字段:

<xp:inputText id="FejlDato" value="#{document.FejlDato}">
    <xp:this.converter>
        <xp:convertDateTime type="date"></xp:convertDateTime>
    </xp:this.converter>
    <xp:dateTimeHelper></xp:dateTimeHelper>
</xp:inputText>

并在时间字段中添加主题ID,以便在主题中定位它们:

<xp:inputText id="FejlTid" value="#{document.FejlTid}">
    <xp:this.converter>
        <xp:convertDateTime type="time"></xp:convertDateTime>
    </xp:this.converter>
    <xp:this.themeId><![CDATA[${javascript:if (context.getUserAgent().isIE()) { "InputField.TimePicker" }}]]></xp:this.themeId>
    <xp:dateTimeHelper></xp:dateTimeHelper>
</xp:inputText>

然后我在主题中使用以下内容来使用dijit.form.DateTextBox和dijit.form.TimeTextBox for IE而不是标准的XPages日期和时间选择器:

<!-- DatePicker for IE8 and IE9 -->
<resources>
    <dojoModule rendered="#{javascript:context.getUserAgent().isIE()}">
        <name>dijit.form.DateTextBox</name>
     </dojoModule>
     <dojoModule rendered="#{javascript:context.getUserAgent().isIE()}">
        <name>dijit.form.TimeTextBox</name>
     </dojoModule>
</resources>
<control>
    <name>InputField.DateTimePicker</name>
    <property>
        <name>dojoType</name>
        <value>#{javascript:context.getUserAgent().isIE()?'dijit.form.DateTextBox':''}</value> 
    </property>
</control>
<control>
    <name>InputField.TimePicker</name>
    <property>
        <name>dojoType</name>
        <value>#{javascript:context.getUserAgent().isIE()?'dijit.form.TimeTextBox':''}</value> 
    </property>
</control>

答案 1 :(得分:1)

我只是使用了dojo日期选择器,它似乎对我有用。没有理由参与主题。

答案 2 :(得分:1)

IE9工作正常,但如果打开兼容模式则不会...... IE科幻小说