Lösung für dieses Problem ist nicht XHTML
von Server, aber native HTML
versanden. Dies liefert Filter, die die Antwort von application/xhtml+xml
zu text/html
ändern. Filtern Sie die Antwortformular-Kopfzeile des Benutzeragenten und finden Sie, ob „compatible; msie 8.0“
gesetzt ist, was bedeutet, dass IE11
im Enterprise-Modus ausgeführt wird und IE8
emuliert wird.
Unsere implementierte Lösung:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
String userAgent = ((HttpServletRequest) request).getHeader("user-agent");
if (userAgent != null && userAgent.toLowerCase().contains("compatible; msie 8.0"))
{
chain.doFilter(request, new ForcableContentTypeWrapper((HttpServletResponse) response));
}
else
{
chain.doFilter(request, response);
}
}
private class ForcableContentTypeWrapper extends HttpServletResponseWrapper
{
public ForcableContentTypeWrapper(HttpServletResponse response)
{
super(response);
}
@Override
public void setContentType(String type)
{
if (type.contains("application/xhtml+xml"))
{
super.setContentType(type.replace("application/xhtml+xml",
"text/html"));
}
else
{
super.setContentType(type);
}
}
}
Es ist vernünftig ** JSF ** und ** ** Richfaces _upgrade_? Oder Anwendung mit verschiedenen Technologien neu programmieren? –
Enterprise-Modus-Definition: Die Seite wird derzeit im Enterprise-Modus gerendert, der eine Emulation von Windows Internet Explorer 8 ist. Und IE8 unterstützt kein iframe mit Element. (http://technet.microsoft.com/library/dn640687.aspx) Keine Sinn Build-Anwendung jetzt auf IE8-Engine ausgeführt werden. –
Versuchen Sie, den HTTP-Header "X-UA-Compatible: IE = Edge" vom Servlet-Filter hinzuzufügen. Beispiel: response.addHeader ("X-UA-kompatibel", "IE = Kante"); –