claudia: Browserabfrage für externe css-Dateien?

Hallo!

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.

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

Danke für eure Hilfe und LG
Claudia

<script language="JavaScript"><!--

// Ueberpruefung der Browserart

if (parseInt(navigator.appVersion) >= 4)
{
if (navigator.appName.indexOf ("Netscape") != -1)
{ //alert("hallo netscape");
document.write('<link rel=stylesheet type="text/css" href="/media/formate_ns.css />')

}
if (navigator.appName.indexOf ("Microsoft") != -1)
{ //alert("hallo explorer");
document.write('<link rel=stylesheet type="text/css" href="/media/formate_ie.css />')
}
}
// -->
</script>

<noscript>
<link rel=stylesheet type="text/css" href="media/formate_ns.css">
<link rel=stylesheet type="text/css" href="media/formate_ie.css">
</noscript>

  1. Bekanntest Problem, fast alle Browser geben sich als IE aus. Teste mit if( eval( Befehl ) ) einfach ob ein Befehl existiert. z.b. der pageXOffset im NS, ! (also der einzige browser wo das nciht ohne es selber zu coden existiert) innerHTML im Mozilla, im opera musste dir die komplette browserspezi holen und nach dem string.toLowerCase "opera" suchen, der kommt da ganz am ende nachm ie vor ^^, und ie... der landet im else zweig ^^

    wären zumindest mal ein paar möglichkeiten.

    1. Hallo, danke.

      Aber die Abfrage funzt ja. Nur was danach kommt geht nicht. Beide Browser greifen immer auf das selbe css-Skript zu.

      Vielleicht hat ja jmd. noch ein Tip zu diesem Thema.

      Danke und LG
      Claudia

      1. Hallo Claudia,

        Vielleicht hat ja jmd. noch ein Tip zu diesem Thema.

        Die Archivsuche nach "Browserabfrage" und "CSS" führte mich zu diesem Artikel

        http://forum.de.selfhtml.org/archiv/2003/4/43892/#m239297

        mit einigen weiterführenden Links zum Thema. Es gibt mehrere Möglichkeiten, und einige kommen sogar ohne Javascript aus.

        Vielleicht hilft ja die Lektüre. Viel Erfolg!

        Schöne Grüße aus Köln-Ehrenfeld,

        Elya

        --
        We are still confused, but on a higher level.
  2. 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