2013-07-31 22 views
5

由於我的問題標題已經告訴我強迫IE8不使用兼容模式的問題。強制IE8不使用兼容模式,在主題中使用MetaData不起作用

我在網上找到了一個在兩個解決辦法從Michael Gollmick,至極會將此代碼發送到beforeRenderResponse:

if (context.getUserAgent().isIE()) { 
    var response = facesContext.getExternalContext().getResponse(); 
    response.setHeader("X-UA-Compatible", "IE=8"); 
} 

此方法適用於精細的兼容模式按鈕在瀏覽器在前看不見和頁面看起來應該。乙

UT我不想這個代碼添加到每一個XPage,所以我試圖解決方案從每Henrik Lausten將元數據添加到我的主題:

<resources> 
    <metaData> 
    <httpEquiv>X-UA-Compatible</httpEquiv> 
    <content>IE=8</content> 
    </metaData> 
</resources> 

但似乎這個元數據的主題沒有效果。當看看HTML源代碼時,我在sourceCode的頭部找到Meta標籤,但IE8似乎只是忽略它。

<meta content="IE=8" http-equiv="X-UA-Compatible"> 

那麼我怎樣才能從主題工作的元數據?或者可以使用任何其他解決方案自動將onRenderResponse代碼添加到每個XPage。

回答

7

你可以用PhaseListener或Theme來做到這一點。使用主題時,您可以使用f.e.使用你不要在你的XPage需要一個styleClass和計算值:

<control> 
    <name>ViewRoot</name> 
    <property> 
     <name>styleClass</name> 
     <value>#{javascript: 
      var response = facesContext.getExternalContext().getResponse(); 
      response.setHeader("X-UA-Compatible", "IE=8"); 
     }</value> 
    </property> 
</control> 

的PhaseListener在是這樣的:

package ch.hasselba.xpages.jsf; 

import javax.faces.event.PhaseEvent; 
import javax.faces.event.PhaseId; 
import javax.faces.event.PhaseListener; 
import javax.servlet.http.HttpServletResponse; 

public class IEPhaseListener implements PhaseListener { 

    private static final long serialVersionUID = 1L; 

    public void afterPhase(PhaseEvent event) { 
    } 

    public void beforePhase(PhaseEvent event) { 
     HttpServletResponse response = (HttpServletResponse) event 
       .getFacesContext().getExternalContext().getResponse(); 
     response.setHeader("X-UA-Compatible", "IE=8"); 

    } 

    public PhaseId getPhaseId() { 
     return PhaseId.RENDER_RESPONSE; 
    } 

} 
+0

謝謝Sven。我使用第一個並將其放置在主題中。 –

0

如果您有一個自定義控件,那麼您的所有XPage都使用該控件,然後將beforeRenderResponse代碼添加到該控件中。例如,你可能有一個自定義的頁面佈局控件。

+0

我將代碼添加到了我的LayoutCC中,但有些頁面我不使用/需要此控件,所以我的Sever思想是一個單獨的CC。這是一個解決方案,但我會提供一個更優雅的'在一個地方解決它',如主題或與database.propertie。 –

0

我有同樣的問題,但使用的主題斯文的代碼也沒有工作。不管順序如何,當我在主題中添加X-UA兼容標籤和favIcon時,favIcon首先在HTML輸出中的標題之後列出。刪除favIcon解決了這個問題。

+0

沒有人爲我工作:(我仍然有同樣的問題。X-UA兼容IE11 dojo DataGrid不顯示值。休息服務很好,但數據不顯示:( 這是我的問題。 /stackoverflow.com/questions/34844425/xpages-dojodatagrid-does-not-show-data-in-internet-explorer-11 –