Die richtige Hack-Strategie
Browser sind fehlerhaft. Man kann eine Seite so exakt nach den Standards entwickeln wie man möchte, es werden immer Fehlinterpretationen vorkommen. Je älter die Browser sind, desto eher ist das der Fall. Deshalb ist es wichtig, eine Strategie zu haben, wie man mit den Fehlern der Browser umgeht. Dabei ist das zielgenaue Treffen des Browsers genauso wichtig, wie die Zukunftssicherheit. Und ganz nebenbei sollte man gerade bei Fehlerbeseitigungen an eine verständliche Kommentierung denken. So kann man selber, so können andere später die gemachten Korrekturen verstehen. Zielgenauigkeit ist wichtig, damit exakt nur der gewünschte Browser zur Korrektur gebracht wird, nicht noch ein anderer, der den angepeilten Fehler überhaupt nicht hat. Zukunftssicherheit schlägt in die gleiche Kerbe und ist gerade bei der Nutzung der klassischen Hacks ein Problem. Denn es ist nicht gesagt, dass eine zukünftige Browserversion nicht auch über diesen Hack ansprechbar ist. Das entwickelt sich dann zu einem Problem, wenn der mit dem Hack zu begradigende Fehler in der neuen Browserversion behoben wurde.
Meiner Meinung nach ist es müssig darüber zu streiten, ob man Hacks gegen Browser anwenden solle. Da ich dem Endkunden eine möglichst störungsfreie Webseite präsentieren möchte, muss ich in irgendeiner Form die Fehler der einzelnen Browser ausgleichen. Das tue ich mit Hacks der unterschiedlichen Art. Der Endkunde kann nichts dafür, dass sein Browser fehlerhaft ist.
Mathias Bynens hat eine sehr umfangreiche und interessante Betrachtung über Hacks geschrieben. Sie ist nicht vollständig, bietet aber die wichtigsten Muster. Auch die Kommentare sind teilweise lesenswert. Sein Artikel verbreitet allerdings den Eindruck, nur der IE sei das Ziel von Hacks. Dem ist nicht so, auch wenn der IE ganz klar führend ist.
Ich persönlich sortiere nur die Hacks für IE6 und 7 in eine eigene Datei. IE8 und 9 müssen viel seltener korrigiert werden. Das mache ich dann mit speziellen Schreibweisen in der normalen CSS-Datei. Sehr hilfreich ist dabei die immer wieder aktualisierte Übersicht von Dirk Ginader.
Interessant fand ich, dass offenbar die von Paul Irish eingeführte Methode, Conditional Comments um das HTML-Element herumzupacken, im IE9 einen echten Nachteil hat. Das betrifft somit alle Nutzer on HTML5-Boilerplate. Die Conditional Comments werfen den IE9 in den Kompatibilitätsmodus. Man kann dies nur serverseitig in einer htaccess-Datei korrigieren, weil das sonst nutzbare META-Element keine Conditional Comments vor sich in der Codereihenfolge mag. (Danke, Microsoft! Beides gibt es nur wegen Euch und ihr schafft es nicht, beides störungsfrei zu kombinieren.)
Hacks sind in meinen Augen ein leider notwendiger Teil unserer Arbeit. Der Artikel von Mathias ist eine super Ausgangslage, sich intensiv Gedanken über sein eigenes Hackmanagement zu machen und vielleicht noch unbekannte Strategien kennenzulernen.