2012-05-21 74 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工作正常,但如果你打開兼容模式下,它不...