2012-05-21 46 views
1

每Henrik建议修复IE中带有xPage扩展名的奇怪的拉伸对话框问题。IE兼容模式会产生XPages的问题DateTimePicker

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> 

回答

1

我只是使用道场日期选择器,它似乎为我工作。没有理由涉及主题。

3

我无意中发现到完全相同的问题。我的修复灵感来自于a blog post by Paul Withers on the subject,涉及到使用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> 

然后我用下面的主题使用dijit.form.DateTextBox和dijit.form.TimeTextBox代替标准的XPage日期和时间选取工具:

<!-- 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> 
+0

我已经使用了类似IE科幻变通基于保罗在过去的建议。主题方法是一个好主意。 – pipalia

+0

我只是使用道场日期选择器,它似乎为我工作。没有理由涉及主题。 –

+0

很高兴听到它适合你。记得接受你的问题的答案:-) –

1

IE9工作正常,但如果你打开兼容模式下,它不...