kleiner hobbit: Conditional Comments

Hallo,

ich habe ein problem, ich möchte falls der Browser IE ist folgenden Stylesheet laden und für alle anderen Browser ein anderen Stylesheet.

Gibt es sowas wie ELSE IF in Conditional Comments?? Hier mein Code:

<!--[if IE]>  
<link rel="stylesheet" href="ie.css" />  
[ELSE IF]  
<link rel="stylesheet" href="ff.css" />  
<![endif]-->

habe ich da ein blöden Tippfehler?

Gruß
kleiner hobbit

  1. Hellihello

    <!--[if IE]>

    <link rel="stylesheet" href="ie.css" />
    [ELSE IF]
    <link rel="stylesheet" href="ff.css" />
    <![endif]-->

      
    vielleicht hilft dir google oder das archiv? <http://forum.de.selfhtml.org/archiv/2006/2/t123920/#m798000>  
      
    ansonsten kenne ich das nur so:  
      
    du baust ein stylesheet für alle browser, und eins, was nur für den ie ist und dort die entsprechenden dinge korrigiert. die meisten sachen interpretiert der ja korrekt, oder einige, die brauchst du dann ja nicht überschreiben.  
      
    Dank und Gruß,  
      
    [frankx](http://community.de.selfhtml.org/visitenkarten/view.php?key=82)
    
    -- 
    [tryin to](http://sauer-ernst.de) [multitain](http://multitain.de)  - Globus = Planet != Welt 
    
    1. <!--[if IE]>

      <link rel="stylesheet" href="ie.css" />
      [ELSE IF]

      da dürfte der IE Parser stolpern

      <link rel="stylesheet" href="ff.css" />

      macht keinen Sinn CSS-Files für nicht MSIE Browser in CComents einzubauen.

      <![endif]-->

      
      > vielleicht hilft dir google oder das archiv? <http://forum.de.selfhtml.org/archiv/2006/2/t123920/#m798000>  
      > ansonsten kenne ich das nur so:  
      > du baust ein stylesheet für alle browser, und eins, was nur für den ie ist und dort die entsprechenden dinge korrigiert. die meisten sachen interpretiert der ja korrekt, oder einige, die brauchst du dann ja nicht überschreiben.  
        
      Es gibt auch die Methode welche pro Medientyp ein Stylesheet für alle Browser verwendet.  
      Voraussetzung ist, dass man im HTML mit Conditional Comments ein Element mit ID einbaut, das nur der betreffende MSIE sieht.  
      Das scheint mir der bessere Ansatz als viele verschiedene CSS Files betreuen zu müssen.  
        
      ~~~html
        
      <body id="body" lang="de-CH" class="maroony">  
      	<!--[if IE]><div id="msie"><![endif]-->  
        
      ...  
        
      	<!--[if IE]></div><![endif]-->  
      </body>  
      
      

      mfg Beat

      --
      Woran ich arbeite:
      X-Torah
      ><o(((°>           ><o(((°>
         <°)))o><                     ><o(((°>o
      Der Valigator leibt diese Fische
    2. @@frankx:

      http://forum.de.selfhtml.org/archiv/2006/2/t123920/#m798000

      plus http://forum.de.selfhtml.org/archiv/2008/11/t179386/#m1183766

      Live long and prosper,
      Gunnar

      --
      Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)
    3. hallo,

      du baust ein stylesheet für alle browser, und eins, was nur für den ie ist und dort die entsprechenden dinge korrigiert. die meisten sachen interpretiert der ja korrekt, oder einige, die brauchst du dann ja nicht überschreiben.

      genau das versuche ich zu machen.... alles was kleiner als ie6 ist, habe auch schon lte IE 6 reingeschrieben, hat er aber nicht geschluckt.

      gruß
      kleiner hobbit

  2. echo $begrüßung;

    Gibt es sowas wie ELSE IF in Conditional Comments?

    Ein else für andere Browser wäre (derzeit) ziemlich nutzlos, weil nur der IE die CC auswertet. Andere sehen weder if noch else, weil sie das gesamte Konstrukt nicht auswerten.

    echo "$verabschiedung $name";

    1. @@dedlfix:

      Ein else für andere Browser wäre (derzeit) ziemlich nutzlos,

      Nein. Im Else-Zweig steht Code, der für Nicht-IEs gilt, aber nicht für IEs.

      weil nur der IE die CC auswertet. Andere sehen weder if noch else […]

      Deshalb steht der Else-Zweig ja auch nicht im Kommentar.

      Live long and prosper,
      Gunnar

      --
      Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)
      1. echo $begrüßung;

        Nein. Im Else-Zweig steht Code, der für Nicht-IEs gilt, aber nicht für IEs.

        Mal abgesehen davon, dass ich keine Else-Spezifikation finde ...

        » weil nur der IE die CC auswertet. Andere sehen weder if noch else […]
        Deshalb steht der Else-Zweig ja auch nicht im Kommentar.

        Wenn du von Else-Zweig redest, impliziert das bei mir, dass du mir sagen willst, dass es einen gäbe. Er ergäbe aber einfach keinen Sinn.

        Fiktiv:
          <!--[if IE]> IE <![endif]-->
          <![else]> anderer <![endelse]>

        Nun wertet der "andere" nur den Else-Inhalt aus, weil dieser nicht in einem Kommentar steckt. Der "andere" macht er aber ohne die vorhergehende Bedingung zu berücksichtigen. Das wäre kein else im bekannten Sinne und damit irgendwie unlogisch.

        Du meinst sicherlich stattdessen den IE-Ausschluss, was aber kein Else sondern ein eigenständiges Konstrukt ist.

        <!--[if IE]> IE <![endif]-->
          <![if !IE]> anderer <![endif]>

        Und so kann ich einen Sinn darin sehen. Die erste Zeile wird von allen überlesen, nur der IE wertet den Inhalt aus. Die zweite Zeile wird von allen gelesen, nur der IE ignoriert es. Und beide sind unabhängig voneinander.

        echo "$verabschiedung $name";

        1. @@dedlfix:

          Und so kann ich einen Sinn darin sehen. Die erste Zeile wird von allen überlesen, nur der IE wertet den Inhalt aus. Die zweite Zeile wird von allen gelesen, nur der IE ignoriert es. Und beide sind unabhängig voneinander.

          Da hast du freilich recht. Es ist genaugenommen kein 'else'; es sind voneinander unabhängige 'if'.

          Live long and prosper,
          Gunnar

          --
          Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)
          1. Hellihello

            @@dedlfix:

            »» Und so kann ich einen Sinn darin sehen. Die erste Zeile wird von allen überlesen, nur der IE wertet den Inhalt aus. Die zweite Zeile wird von allen gelesen, nur der IE ignoriert es. Und beide sind unabhängig voneinander.

            Da hast du freilich recht. Es ist genaugenommen kein 'else'; es sind voneinander unabhängige 'if'.

            Naja, was aber ist rein logisch if(a){}else{} anderes als if(a){}if(!a){}?

            Dank und Gruß,

            frankx

            --
            tryin to multitain  - Globus = Planet != Welt
            1. Naja, was aber ist rein logisch if(a){}else{} anderes als if(a){}if(!a){}?

              if (a) {
              } else {
              }

              Hier würde er else-Zweig zutreffen, wenn a nicht "true" ist, also a = 'foo', a = 42 oder sonstwas (automatisches Typenkonvertierung ausgenommen).

              Im Falle von
              if (a) {
              }
              if (!a) {
              }

              trifft a zu wenn es true ist sowie !a wenn a false ist - a = 'foo' trifft z.B. bei beiden Bedingungen nicht zu.

              1. Hellihello

                »» Naja, was aber ist rein logisch if(a){}else{} anderes als if(a){}if(!a){}?

                if (a) {
                } else {
                }

                Hier würde er else-Zweig zutreffen, wenn a nicht "true" ist, also a = 'foo', a = 42 oder sonstwas (automatisches Typenkonvertierung ausgenommen).

                Im Falle von
                if (a) {
                }
                if (!a) {
                }

                trifft a zu wenn es true ist sowie !a wenn a false ist - a = 'foo' trifft z.B. bei beiden Bedingungen nicht zu.

                naja, bei IE gehts ja um "Eigentschaft IE vorhanden" und "nicht vorhanden". Was dazwischen gibts nicht. Bzw ist es egal, ob dann FF, Opera, IW oder was.

                Dank und Gruß,

                frankx

                --
                tryin to multitain  - Globus = Planet != Welt
            2. echo $begrüßung;

              Naja, was aber ist rein logisch if(a){}else{} anderes als if(a){}if(!a){}?

              Nicht-IEs ignorieren dieses ganze Konstrukt. Sie werten den If-Teil nicht aus und dementsprechend wäre ein Else-Teil nicht wirklich logisch, denn dessen Inhalt sehen sie immer und führen ihn aus, egal ob der If-Zweig zutrifft oder nicht. Beachte dazu auch die Art, wie die HTML-Kommentare geschachtelt werden.

              Man kann das so lesen (fiktiver Code):

              <!--[if IE]> ... <![endif]--> Versteckte Nachricht: Bist du ein IE? Bitte ... ausführen!
              <![else]> ... <![endelse]> Versteckte Nachricht: Ansonsten bitte ... ausführen!
              Dumm nur, dass die anderen die versteckte Nachricht gar nicht hören. Und da ist es unlogisch, sich an sie zu wenden. Stattdessen sagt man einmal dem IE, dass er etwas trotz des Kommentars berücksichtigen soll und beim anderen Mal, dass es es trotz Sichtbarkeit nicht tun soll.

              Praktisch gesehen ist es im Prinzip Haarspalterei, denn aus der Sicht eines IE ergäbe ein Else einen Sinn und aus Sicht eines Nicht-IE existiert das alles nicht, weil es nur Kommentare sind (außer dem Inhalt des "Else").

              echo "$verabschiedung $name";

              1. Moin.

                Praktisch gesehen ist es im Prinzip Haarspalterei, denn aus der Sicht eines IE ergäbe ein Else einen Sinn und aus Sicht eines Nicht-IE existiert das alles nicht, weil es nur Kommentare sind (außer dem Inhalt des "Else").

                Es wäre schon möglich, else-Zweige sowohl für IEs als auch nicht-IEs sinnvoll umzusetzen: bei JScript's conditional compilation ist Microsoft diesen Weg gegangen!

                Christoph

                1. Hellihello

                  »» Praktisch gesehen ist es im Prinzip Haarspalterei, denn aus der Sicht eines IE ergäbe ein Else einen Sinn und aus Sicht eines Nicht-IE existiert das alles nicht, weil es nur Kommentare sind (außer dem Inhalt des "Else").

                  Es wäre schon möglich, else-Zweige sowohl für IEs als auch nicht-IEs sinnvoll umzusetzen: bei JScript's conditional compilation ist Microsoft diesen Weg gegangen!

                  Aber im logischen Ergebnis ist es doch ein if-else. Von Browserseite ist das ergebnis: if(IE) read this, else read that.

                  Dank und Gruß,

                  frankx

                  --
                  tryin to multitain  - Globus = Planet != Welt
  3. Hi,

    ich möchte falls der Browser IE ist folgenden Stylesheet laden und für alle anderen Browser ein anderen Stylesheet.

    BTW: Man sollte sich so langsam dran gewöhnen, daß der IE 8 i.d.R. das Stylesheet der "normalen" Browser bekommt.

    Gruß, Cybaer

    --
    Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
    (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)