1

Per Henrik 建议使用 xPage 扩展解决 IE 中奇怪的拉伸对话框问题。

修复 IE 中“拉伸”的 XPage 扩展库名称选择器?

这很好用并解决了问题。但这会导致 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>  
4

3 回答 3

3

我偶然发现了完全相同的问题。我的修复受到Paul Withers 关于该主题的博客文章的启发,涉及使用 Dojo DateTextBox 和 TimeTextBox for 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>

然后,我在主题中使用以下内容来为 IE 使用 dijit.form.DateTextBox 和 dijit.form.TimeTextBox 而不是标准的 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>
于 2012-05-21T14:34:39.070 回答
1

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

于 2012-05-29T20:25:06.933 回答
1

IE9 工作正常,但如果你打开兼容模式就不行了…… IE 科幻

于 2012-11-21T07:53:37.327 回答