7

Unsere Anwendung kann nicht mit IE11 und EM ausgeführt werden. Wir verwenden ändern JSF-1.2 und RichFaces 3.X. Wenn wir Web-Seite auf IE11 ohne EM laufen alle funktioniert OK, aber wir müssen IE11 mit EM verwenden. Ist eine mögliche Methode zu EM für Seite aus Code deaktivieren?JSF-Anwendung mit IE11 mit Enterprise-Modus

IE Konsolenaufruffehler: "XML5632: Nur ein Stammelement ist zulässig." Es tritt auf, wenn zwischen Seiten verschoben wird.

PS: Anwendung arbeitet an IE8, IE9 und IE11 ohne Probleme, aber wenn Sie versuchen es mit IE11 und EM Es ist Fehler zu erhöhen.

+0

Es ist vernünftig ** JSF ** und ** ** Richfaces _upgrade_? Oder Anwendung mit verschiedenen Technologien neu programmieren? –

+0

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. –

+0

Versuchen Sie, den HTTP-Header "X-UA-Compatible: IE = Edge" vom Servlet-Filter hinzuzufügen. Beispiel: response.addHeader ("X-UA-kompatibel", "IE = Kante"); –

Antwort

2

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); 
    } 

    } 
} 
-1

Wenn Ihre Anwendung nur innerhalb des Intranets und zugänglich innerhalb eines begrenzten Netzes begrenzt ist, dann können Sie EM durch die Gruppenrichtlinien-Netzwerk deaktivieren

http://msdn.microsoft.com/en-us/library/dn640688.aspx

oder können Sie versuchen, Ihre Anwendung URL von der entfernen sitelist-Datei (die Datei, in dem Registry EM-Eintrag wird auf den unter dem Link oben zeigt), so dass Ihre Anwendung nicht in der EM-Site-Liste

Weitere Verweise aufgenommen werden: http://msdn.microsoft.com/en-us/library/dn640699.aspx

+0

Dies ist keine Lösung für mich .. unsere Kunden haben Unternehmensrichtlinien für diese und Anwendung in Frame unter anderen Anwendung, die auf EM ausgeführt werden müssen. Ich frage nach deaktivieren EM für Seite aus Code .. –