Unterstützung für Internetexplorer von Google?

Hallo zusammen,

habe kürzlich den Code meiner Homepage aufgeräumt und stark optimiert (HTML(5): CSS3, gekapseltes JavaScript…). Nun habe ich zu erschrecken festgestellt, dass meine HP auf dem IE überhaupt nicht mehr läuft. Habe mich für die sehr radikale Lösung entschieden, IE-Nutzer von meiner HP zu kicken. :wink:

Da ich nicht wirklich Lust habe meine HP extra für den IE zu optimieren, dachte ich mir, ich leite den Nutzer unter Anmerkung auf die HP von Firefox weiter. Momentan habe ich es dann doch so gelöst, dass ich den Nutzer auf meine alte (auf IE noch lauffähige) Version 4 meiner HP umleite. Die Lösung macht mich so natürlich nicht glücklich.

ABER: Ich meinte ich hätte mal vor längerer Zeit iwo gelesen, dass Google Seiten unterstützt, die nicht IE-kompatibel sind, indem sie einfach mittels Chrome-Engine im IE dargestellt werden. Gibts das noch? Hab da auf Google nix gefunden, weil ich nicht weiß, wie das genau heißt…

Was funktioniert denn da nicht richtig?
Da zumindest auf den Folgeseiten für das HTML kein Doctype angegeben wird, werden die meisten
Programme da im Quirksmodus laufen, insbesondere der MSIE nimmt also auch bei aktuellen
Versionen an, er solle die Mängel und Fehler vom MSIE5/6 simulieren - klar, daß da diverse
Dinge anders dargestellt werden. Zumindest was aktuellere Varianten vom MSIE ab etwa Version
7 angeht, kann man das Problem hinsichtlich CSS2.1 weitgehend beseitigen, indem man für
HTML einen dem MSIE bekannten Doctype angibt, also etwa den für HTML4.

Bei CSS3-Modulen, sofern es dafür überhaupt schon eine Empfehlung gibt (das sind nur recht
wenige), sollte man zwangsläufig immer eine Stilvorlage angeben, die mit CSS2.1 auskommt und
dann die neuen Eigenschaften so hinzufügen, daß sich dann eine alternative Anzeige ergibt,
falls die Eigenschaften interpretiert werden. So kann man dann erreichen, daß man auch mit
alten Programmen Zugang zum Inhalt hat, ohne auf neue Eigenschaften für neue Programme
verzichten zu können und ohne Wissen zu müssen, welche Programme was von CSS3
interpretieren. CSS3-Module, die noch im Stadium eines Arbeitsentwurfes sind, sollte man für
normale Seiten gar nicht beachten, das erspart einem viel Arbeit und Ärger.

Auch HTML5 ist ja noch keine Empfehlung, sollte es da Probleme geben, verzichtet man besser
die nächsten Jahre auf neue Elemente - oder aber man sorgt wenigsten über die eingebauten
Methoden für Alternativen, falls die neuen Elemente nicht interpretiert werden.
Unabhängig von Programm und Version sollte so der Zugang zum Inhalt gewährleistet sein.

Hinsichtlich java-script - da sorgt man natürlich erstmal dafür, daß der Inhalt auch zugänglich
ist, wenn dies nicht interpretiert wird, statt da eine Nachricht hinzuschreiben, daß es zu aktivieren
sei - ähnlich wie bei CSS hat dann der Nutzer auf jeden Fall Zugang zum Inhalt, wenn er die
zusätzliche Interpretation abschaltet, wenn Probleme auftreten.
Zu dieser Grundvariante kann man dann immer noch eine Alternative mit java-script anbieten,
welche die Grundvariante dann eben etwas anders dekoriert oder darstellt, ohne am eigentlichen
Inhalt was zu ändern.
Da wohl java-script bei unterschiedlichen Programmen anders funktioniert und der Status der
Implementierung von neuen Merkmalen stark versionsabhängig ist, bastelt man da wohl immer
Abfragen ein, um herauszufinden, ob oder welche Merkmale funktionieren und bietet dann
jeweils unterschiedliche Skriptfragmente an, um das gleiche oder ein ähnliches Verhalten zu
erreichen, machmal soll es wohl auch reichen, unterschiedliche Umsetzungen in einem Modul
so zu verwursten, daß man aus dem Modul einheitliche eigene Merkmale generiert, mit denen
man dann unabhängig von den Fähigkeiten des Programmes weitermachen kann.

Es ist also der falsche Ansatz, etwas für dieses oder jenes Programm ‘optimieren’ zu wollen.
Es ist sinnvoller, in mehreren Schichten zu denken, die aufeinander aufbauen - was recht gut
geht, denn alte Programme ignorieren meist unbekannte Strukturen. Daher kann man mit
einfachen Strukturen beginnen und für neuere Programme dann zusätzlich komplexere
Strukturen in eine weiteren Schicht anbieten. (X)HTML und CSS sind so konzipiert, daß man das
gut realisieren kann, wenn man will. Da gibt es nur ein paar Stellen in den Spezifikationen
(von CSS und XHTML, HTML4), die so unbrauchbar sind, daß man auf diese Teile ganz
verzichten sollte, weil sie widersprüchlich, unsinnig oder rückwärtsinkompatibel sind.

Wenn also das Bedürfnis aufkommt, dem Nutzer vorschreiben zu wollen, welches Programm er
zur Darstellung wie nutzen soll, ist da konzeptionell etwas komplett schiefgelaufen.
Da ist es dann relevant herauszufinden, was schiefgelaufen ist, nicht wie man die Nutzer
verärgert, bei denen etwas schiefläuft, weil das Projekt schlecht umgesetzt ist.

Danke für die ausführliche Erklärung. Aber damit wurde meine eigentliche Frage nicht beantwortet. Habe die Antwort selbst herausgefunden: Es handelt sich um das Google Chrome Frame. Aber so toll ist das auch nicht, weil der Nutzer ein Plugin für den IE benötigt und das wohl auch nicht ohne weiteres von Nutzern ohne Rechte installiert werden kann.

Bin nochmal auf Fehlersuche gegangen und hab zumindest die Low-Detail Variante für den IE optimiert. Es gab/gibt zwei Fehler:

  1. IE7 Bug (auch noch bei IE9) mit z-index. Da half nur eine Restrukturierung des HTML-Codes und CSS.

  2. IE kann name und id nicht auseinanderhalten. Um durch alle Elemente mit einem bestimmten Namen zu iterieren, muss für den IE das id Attribut mit dem selben Namen angegeben sein. Somit ist es quasi gar nicht möglich, hübschen und validen Code zu erzeugen. :-/
    Natürlich könnte ich gleich durch alle Elemente der Seite iterieren und mir die passenden herauspicken. Das ist nicht besonders elegant und insbesondere nicht die Aufgabe des Autors.

Ich versuche bei einer alternativen Variante weitestgehend auf JavaScript zu verzichten. Aber wie soll man ein Popup Menü ohne JavaScript realisieren? Zudem ist JavaScript heut zu Tage wirklich Standard und der Prozentsatz an Verweigern ist doch verschwindend gering, so dass noch kaum jemand ausgeschlossen wird.

Auf HTML5 möchte ich auf keinen Fall verzichten, auch wenn es sich im Entwurfsstadium befindet. Der Grund ist ganz einfach: Marketing! Da klingeln die Kassen, das wollen die Leute haben. :wink:

Zu 1: Ist das irgendwo von anderen Leuten dokumentiert? Ganz sicher, daß es nicht am
Quirksmodus (fehlender doctype) liegt?

Zu 2: Das Attribut name kommt doch vorrangig nur noch bei Formularen vor, sollte mich wundern,
wenn der MSIE das dort nicht beherrscht, sonst könnte man mit dem praktisch keine
Formulardaten verschicken ;o) Dort, wo name mal in HTML3.2 wie in HTML4 als id verwendet
wurde, ist es ja entweder als veraltet gekennzeichnet oder komplett gestrichen. In den
transitional-Varianten ist es dort ansonsten das Gleiche wie id und sollte keinen anderen
Wert haben, wenn man es überhaupt noch verwendet - mag ja sein, daß der MSIE das
intern konvertiert. Bei Formularen hingegen bedeuten die Attribute was anderes - könnte aber
auch am Quirksmodus liegen, wenn der MSIE da wirklich was durcheinanderbringt…

  1. popup - das meiste kann man mit Listen und CSS :hover realisieren. Sollte man wirklich der
    Meinung sein, daß java-script irgendwie nützlich ist, ist es immer noch das beste, das
    komplett statisch und funktionsfähig erstmal nur mit (X)HTML-Listen zu realisieren - und dann
    eben eine alternative Darstellung über das DOM per java-script zu erzeugen. Wer das nicht
    aktiviert hat, sieht dann eben nur die statische Variante und kein popup - das wird ja inhaltlich
    nicht wirklich wichtig sein, anders als etwa ein Menu, was auf jeden Fall immer den Zugang
    zum Inhalt ermöglichen muß, egal, was nun aktiviert ist oder nicht ;o)

  2. Ob es viele Leute sind, die java-script deaktiviert haben, kann ich nicht sagen, bei mir ist
    das die Grundeinstellung bei mir unbekannten Seiten - und wenn die Seiten defekt sind oder
    keinen Inhalt haben, gibt es ja auch keinen Grund, sie wieder anzugucken. So kann es also
    leicht passieren, daß man auf mit java-script pessimierten Seiten wirklich kaum Leute findet,
    die das deaktiviert haben, schlicht weil die Seite für die Leute irrelevant ist. Die mangelhafte
    Seite beeinflußt somit natürlich, wer sich das überhaupt noch anguckt - ist eben unzugänglich,
    diskriminierend und nicht barrierefrei.

  3. HTML5 - ich glaube nicht, daß dem durchschnittlichen Nutzer auch nur auffällt, mit welcher
    Version von HTML oder XHTML eine Seite geschrieben ist, das ist für die allermeisten schlicht
    belanglos. Die meisten werden nicht einmal von der Existenz eines Arbeitsentwurfes für HTML5
    wissen. Zudem kann man ja gar keine HTML5-Dokumente schreiben, weil man sie nicht als
    solche formal kennzeichnen kann. Der Arbeitsentwurf beschreibt bislang nur das Verhalten von
    Darstellungsprogrammen, nicht wie man Dokumente in dem Format veröffentlichen kann.
    Was derzeit so als HTML5 durchgeht, sind Dokumente mit undefiniertem Inhalt, weil nicht
    angegeben wird.
    Was ich von deinen Seiten gesehen habe, ist einfach nur Markierungssuppe und ist nichtmal
    das, was der HTML5-Arbeitsentwurf empfiehlt, wie man die Markierungssuppen-parser dazu
    bewegen kann, das gemäß HTML5 zu interpretieren und CSS nach den besten Möglichkeiten
    korrekt anzuwenden (Quirksmodus eben). Um ein definiertes Verhalten der
    Darstellungsprogramme zu bekommen, verwendet man entweder die XHTML-Variante von
    HTML5 oder setzt bei text/html vorne einen bestimmten doctype rein, der im Arbeitsentwurf
    beschrieben ist - kann übrigens auch einer für HTML4 sein, nicht nur das ziemlich sinnfreie,
    versionslose Teil, sogar einer für XHTML1.0 geht wohl.

Hi,

Zu 2: Das Attribut name ist nicht bei allen Tags gültig. Es kann sein, dass getElementByName nicht funktioniert falls name falsch benutzt wird.
Um eine Gruppe von beliebigen Elementen zu kennzeichnen und auszuwählen ist das Attribut “class” gedacht. In Javascript geht das mit getElementsByClassName, XPath oder einer CSS-selector-Engine wie sizzle (von jquery benutzt) oder slick (teil von mootools).
Der IE unterstützt leider weder getElementsByClassName noch XPath, aber es gibt genügend JS-Bibliotheken: code.google.com/p/wicked-good-xpath/