2013-07-31 11 views
5

私の質問にはすでにタイトルがあります。IE8は互換モードを使わないように強制しています。IE8は、互換モードを使用しないようにしてください。MetaDataをテーマに使用しないでください。

私はウェブMichael Gollmickから1上に2つの解決策を見つけ、ウィッヒはbeforeRenderResponseにこのコードを追加します。

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

このソリューションは、それが必要のようなブラウザのdisapearsで互換モードボタンとページが見えます正常に動作します。私はすべてのXPageにこのコードを追加したくないので、私は私のテーマにメタデータを追加する毎Henrik Laustenから解決策を試してみましたB

UT:

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

しかし、それがテーマで、このメタデータと思われますefectはありません。 HTMLソースコードを見てみると、ソースコードのヘッダーにMetaタグがありますが、IE8はそれを無視するようです。

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

どうすればテーマからメタデータを取得できますか?または、自動化するための他のソリューションでは、すべてのXPageにonRenderResponseコードを追加できます。

答えて

7

これは、PhaseListenerまたはThemeで実行できます。テーマを使用するときは、f。あなたの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にコードを追加しましたが、私のsecound思考が別のCCだったので、このコントロールを使用したり必要としないページがあります。それは解決策ですが、私はThemeやdatabase.propertieのように、より洗練された「1か所で解決する」ことを推奨します。 –

0

私は同じ問題を抱えていたが、テーマにスヴェンのコードを使用してどちらもうまくいきませんでした。どのような順序であっても、X-UA-CompatibleタグとfavIconをテーマに追加したとき、favIconはHTML出力のタイトルの後に最初にリストされました。 favIconを削除すると問題が解決しました。

+0

私のために働いた人はいませんでした(私はまだ同じ問題があります)X-UA互換のIE11 dojo DataGridは値を表示しません。 /stackoverflow.com/questions/34844425/xpages-dojodatagrid-does-not-show-data-in-internet-explorer-11 –

関連する問題