1

Ich habe JSF/Richfaces Web App. Diese Anwendung war ursprünglich für IE6 Browser vorgesehen. Jetzt müssen wir es auch auf IE-8 portieren. Der App-Server ist Weblogic 10.3. Ich habe die folgenden Lösungen ausprobiert.IE8 Kompatibilität für JSF/Richfaces Anwendung

  1. Ein Filter zum Hinzufügen von Header-Parameter, X-UA-kompatibel.
  2. JSF PhaseListener zum Hinzufügen von Header-Parameter, X-UA-kompatibel.
  3. Hinzugefügt Meta-Tag in der ersten Zeile des Kopfes auf der Seite.

Keine der oben genannten funktioniert. Außerdem kann ich keine benutzerdefinierten Headerwerte festlegen. HttpRequestWrapper funktioniert nicht so gut.

Bitte schlagen Sie Lösungen vor. Ich wünschte immer, ich könnte Scriptlets in JSF oder Logik-Tags überall in JSF verwenden.

+0

Die x-ua-kompatiblen Tag sollte tun, was es erwartet; kannst du uns zeigen, wie du es benutzt hast? Hast du es auf EmulateIE6 eingestellt? – Sampson

+0

Ich fügte als erste Zeile in head hinzu. Aber im gerenderten Code erscheint dies nach JSF css und scriptlets. – SKR

Antwort

0

Die X-UA-Compatible Option in IE8 kann nur als ein Fallback für IE7-Kompatibilität arbeiten. Es hat keine Option IE6 zu emulieren.

Aus diesem Grund ist die Situation, in der Sie sich befinden - mit einer Intranet-App, die für IE6 geschrieben ist und nicht in IE8 funktioniert - einer der Hauptgründe, warum Unternehmen so lange bei IE6 geblieben sind kann ziemlich schwer zu aktualisieren sein.

Die ideale Lösung ist natürlich, den Code in Ihrer Website zu aktualisieren, so dass es in IE8 (oder besser IE9) funktioniert. Dies kann ein langer und teurer Prozess sein, aber es gibt keine offizielle Abkürzung Lösung.

Wenn Sie Ihre Website nicht aktualisieren können, müssen Sie bei IE6 bleiben. Aber es gibt einige Lösungen, die das weniger schmerzhaft machen könnten.

Die offensichtliche Quick-Fix-Antwort besteht darin, Ihre Hauptplattformen auf IE8 oder IE9 zu aktualisieren, aber weiterhin IE6 auszuführen, in einer virtuellen Maschine zu bleiben und sie nur für die spezifischen Sites zu verwenden, die sie benötigen. Es gibt auch die ultra-billige Option von IETester, eine App, die mehrere Versionen von IE auf demselben Computer (einschließlich IE6) ausführen kann. Es ist jedoch bekannt, dass IETester häufig abstürzt, daher ist es wahrscheinlich keine ideale Lösung. Es ist gut für das Testen einer Website in verschiedenen IE-Versionen, aber nicht für eine nützliche Arbeit.

Diese Maßnahmen sind bestenfalls Lückenbehebungsmaßnahmen, halten Sie jedoch am Laufen, während Sie den Rest Ihrer Infrastruktur aktualisieren können.

Eine etwas robustere Antwort könnte in Form von Browsium kommen. Dies ist ein Produkt, das von einigen Ex-Microsoft-Ingenieuren auf den Markt gebracht wurde, um ältere IE6-spezifische Websites in neueren Explorer-Versionen zu unterstützen. See also this article für ein gutes Beispiel aus der Praxis, was sie tun können.

Auf lange Sicht müssen Sie Ihre Website eventuell aktualisieren; IE6 kann nicht ewig dauern, selbst mit Lösungen wie Browsium. Mit diesen Lösungen können Sie sich jedoch kurzfristig davon zurückhalten, Änderungen vorzunehmen.

Wenn Sie jetzt das Upgrade machen, würde ich dringend empfehlen, IE8 zu überspringen und wenn möglich direkt zum IE9 zu wechseln. IE8 ist bereits veraltet und wird ähnliche Upgrade-Probleme zu IE6 verursachen (obwohl wahrscheinlich nicht ganz so schlimm), wenn seine Unterstützung endet.

+0

Danke für Ihre Antwort !! 1. Ich fürchte, wir müssen auf IE8 migrieren und ** Abwärtskompatibilität ** mit IE6 beibehalten. Das Überspringen von IE8 und der Wechsel zu IE9 kommt nicht in Frage. 2. Dieses Meta-Tag funktioniert ordnungsgemäß in einer Struts-basierten Anwendung, nicht jedoch in JSF/Richfaces. Danke für Scriptlet/Logic Tags Ich kann bestimmte Probleme leicht lösen. – SKR

+0

Hallo @SKR keine Notwendigkeit, Meta-Tag in Xhtml hinzuzufügen, nur legen Sie einfach meine obige Antwort wird es alle Probleme lösen –

0

Für ausblenden CompitibilityView Knopf im IE 8 9 In Jsf Sie müssen nur diesen Code setzen in Ihrem PhaseListner Klasse implementiert

@Override public void beforePhase(PhaseEvent event) { response.addHeader("X-UA-Compatible", "IE=edge"); } einfach diese Zeile hinzufügen in Implementiert PhaseListner Klasse

+0

Dank Jigar Patel. Ich werde es und reagiere so schnell wie möglich. – SKR

+0

@Jigar: Dein Caps-Lock hängt und jetzt siehst du aus, als würdest du schreien wie ein nerviges kleines Kind. Das ist unprofessionell. Ich schlage vor, den Kommentar zu löschen und es bei abgeschalteter Caps-Lock-Funktion erneut einzugeben. Übrigens ist das Nicken nach dem Häkchen relativ unhöflich, wenn das OP noch nicht bestätigt hat, ob die Antwort * tatsächlich * bei der Lösung des Problems geholfen hat und ob das OP * bereits * mit dem System vertraut ist. – BalusC