Sönke Tesch: Browserabfrage für externe css-Dateien?

Beitrag lesen

Da manche Stylesheets vom Explorer und von Netscape unterschiedlich interpretiert werden, möchte ich eine Abfrage schalten und damit auf 2 unterschiedliche externe css. Dateien verweisen.

Bevor Du an anfängst, an den Symptomen rumzudoktern, solltest Du erstmal spezifizieren, wo genau das Problem denn liegt.

Deiner Fragestellung nach wäre als Erstes die Bezeichnung "Netscape" zu begutachten, denn Netscape ist nicht gleich Netscape. Die Versionen bis einschließlich 4 sind - was CSS betrifft - in der Tat unter aller Sau. Das genaue Gegenteil sind die Versionen ab einschließlich 6 (aktuell ist 7), diese stellen (zusammen mit Opera) die derzeitige Referenz dar, was standardgerechtes Verhalten angeht.
Damit hätten wir also schonmal zwei Netscape-Gruppen, die tunlichst voneinander zu unterscheiden sind, Du prüfst hingegen nur eine.

Als zweites wäre zu prüfen, was Du überhaupt für einen Code einsetzt. Hältst Du Dich nicht an die Standards, ist es nicht unbedingt verwunderlich, daß ein Browser dieses macht und ein anderer jenes. Ansatzpunkt wäre hier aber, auf standardgerechten, d.h. fehlerfreien Code zu setzen, anstatt für jedes Wehwehchen ein extra Pflaster zu besorgen.

Als Unterpunkt sei auch darauf hingewiesen, daß einige Browser zwei Darstellungsmodi kennen: Einen althergebrachten, in dem sie so arbeiten, wie die Entwickler es anno dazumal für richtig hielten und einen standardkonformen, in dem sie so arbeiten, wie es in den Standards steht.
Willst Du gleiches Browserverhalten über Herstellergrenzen hinweg, solltest Du die Browser in den standardkonformen Modus schalten.

Erst wenn Du diese zweieinhalb Punkte geklärt hast, kannst Du Dir Gedanken über eine Browserweiche machen - was aber nicht verschleiern soll, daß Browserweichen IMHO eigentlich ein böses Übel sind, das unter allen Umständen zu vermeiden ist.

So habe ich es versucht, funktioniert aber leider nicht. Wo bitte liegt der Fehler?

if (navigator.appName.indexOf ("Netscape") != -1)

if (navigator.appName.indexOf ("Microsoft") != -1)

Der Fehler ist hier schonmal, daß Du andere Browser wie zum Beispiel Mozilla, Opera oder Konqueror überhaupt nicht berücksichtigst - und das vollkommen ohne Grund, denn jeder dieser Browser versteht CSS mindestens so gut wie der Internet Explorer, meistens besser.

Gruß,
  soenk.e