Ludger: Browserüberprüfung

Hallo,

ich habe folgendes Problem, ich möchte ein Script ausführen lassen, nur wenn es sich beim Browser um den Internet Explorer 6 oder niedriger handelt. Im Internet Explorer 7 soll es nicht ausgeführt werden.

Hat jemand von euch eine Idee oder noch besser ein Beispiel, wie ich das lösen kann??

Vielen Dank
Euer Ludger

  1. Hallo,

    ich möchte ein Script ausführen lassen, nur wenn es sich beim Browser um den Internet Explorer 6 oder niedriger handelt. Im Internet Explorer 7 soll es nicht ausgeführt werden.

    Conditional Comments

    Grüße,

    Jochen

    --
    Kritzeln statt texten:
    Scribbleboard
    1. Conditional Comments

      Da es um Javascript geht, ergänze ich noch Conditional Compilation. Hinweis dazu: Der IE bis v6 kennt bestenfalls JScript 5.6, der IE v7 kennt hingegen JScript Version 5.7.

      Siechfred

      --
      Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
  2. Hallo Ludger,

    Hat jemand von euch eine Idee oder noch besser ein Beispiel, wie ich das lösen kann??

    if (!window.innerWidth && !window.XMLHttpRequest) {  
      // sollte nur im IE < 7 gehen  
    }
    

    Gruß,
    Dodwin

    --
    Dodwin
    1. Hat jemand von euch eine Idee oder noch besser ein Beispiel, wie ich das lösen kann??

      if (!window.innerWidth && !window.XMLHttpRequest) {

      // sollte nur im IE < 7 gehen
      }

        
      Wieso sollte dass nur im IE <7 gehen?  
        
      Struppi.
      
      -- 
      [Javascript ist toll](http://javascript.jstruebig.de/) (Perl auch!)
      
      1. Hallo Struppi,

        if (!window.innerWidth && !window.XMLHttpRequest) {
        Wieso sollte dass nur im IE <7 gehen?

        Weil der IE generell kein window.innerWidth kennt.
        Damit hat man also schon mal die IE's.
        Und da der IE 7 window.XMLHttpRequest kennt, schließt die zweite Bedingung den IE 7 aus.

        Gruß,
        Dodwin

        --
        Dodwin
    2. Hallo,

      if (!window.innerWidth && !window.XMLHttpRequest) {

      // sollte nur im IE < 7 gehen
      }

        
      Bitte, bitte keine Browsererkennung über Drittobjekte. Die sind niemals hundertprozentig zukunftssicher und produzieren gerne auch in nicht bedachten Situationen falsche Resultate.  
        
      Es gibt zwei ziemlich sichere Möglichkeiten, einmal direkt im JavaScript-Code:  
        
      /\*@cc\_on  
       /\*@if (@\_jscript\_version == 5.7)  
        var isIE7 = true;  
       @\*/  
      @\*/  
        
      Oder wie gesagt im HTML-Code:  
        
      <!--–[if IE 7]-->  
      <script type="text/javascript"> var isIE7 = true; </script>  
      <!--[endif]-->  
        
      Vorher kann man die Variable auf false setzen.  
        
      Mathias
      
      1. Hallo molily,

        if (!window.innerWidth && !window.XMLHttpRequest) {

        // sollte nur im IE < 7 gehen
        }

          
        
        > Bitte, bitte keine Browsererkennung über Drittobjekte.  
          
        Was ist ein Drittobjekt (auf JavaScript bezogen)?  
          
        
        > Die sind niemals hundertprozentig zukunftssicher und produzieren gerne auch in nicht bedachten Situationen falsche Resultate.  
          
        Aber es ist (auf das Beispiel IE<7 bezogen) doch unwahrscheinlich, dass window.XMLHttpRequest in der nächsten IE-Version abgeschafft wird. Wo könnte es da zu einem Problem kommen?  
          
        
        > /\*@cc\_on  
        > ...  
        
        Das kannte ich noch nicht. Aber Google stimmt dir zu ;) , es scheint sicher nur im IE zu gehen.  
          
        Gruß,  
        Dodwin
        
        -- 
        [Dodwin](http://www.dodwin.de/)
        
        1. Hallo,

          Bitte, bitte keine Browsererkennung über Drittobjekte.

          Was ist ein Drittobjekt (auf JavaScript bezogen)?

          Ein Objekt, das nichts mit der Lösung der gegenwärtigen Aufgabe zu tun hat. Wenn ich irgendwas umsetzen will und merke, dass Browser A sich anders als Browser B verhält, dann versuche ich erst einmal, den Unterschied an den Objekten festzumachen, mit denen ich auch operiere. Wenn ich an der Stelle nicht mit XMLHttpRequest arbeite, das Objekt mit der Problematik also gar nichts zu tun hat, sollte ich auch nicht von hinten durch die Brust ins Auge eine Weiche bauen.

          Im IE lässt sich die Unterstützung von window.XMLHttpRequest ausschalten, dann funktioniert nur noch die ActiveX-Syntax. Gut, das macht höchstwahrscheinlich keiner - es ist auch nur ein Beispiel, denn solche Kleinigkeiten gibt es zuhauf und man kann sie durch bessere
          Browserweichen von vornherein ausschließen.

          Aber es ist (auf das Beispiel IE<7 bezogen) doch unwahrscheinlich, dass window.XMLHttpRequest in der nächsten IE-Version abgeschafft wird. Wo könnte es da zu einem Problem kommen?

          Nein, aber möglich ist, dass IE 8 window.innerWidth implementiert oder irgendein anderer Browser window.innerWidth nicht kennt, aber window.XMLHttpRequest und dann als IE 7 klassifiziert wird.

          Mathias

          1. Hallo molily,

            Ein Objekt, das nichts mit der Lösung der gegenwärtigen Aufgabe zu tun hat. Wenn ich irgendwas umsetzen will [...]

            Achso. Ja, da stimme ich dir zu. Aber leider gab der Thread auch nicht mehr her...
            Die @cc_on scheint in dem Fall die bessere Lösung zu sein.

            Nein, aber möglich ist, dass IE 8 window.innerWidth implementiert oder irgendein anderer Browser window.innerWidth nicht kennt, aber window.XMLHttpRequest und dann als IE 7 klassifiziert wird.

            Wenn der IE 8 window.innerWidth einbaut wäre das (noch immer auf das Beispiel bezogen) egal, da es ja nur um IE<7 ging. IE 8 würde von also von (!window.innerWidth && !window.XMLHttpRequest) nicht erfasst werden, wodurch die Erkennung weiterhin korrekt wäre.
            Ein Browser müsste window.innerWidth und window.XMLHttpRequest nicht kennen.
            Und das Risiko wäre ich bereit einzugehen, da ich bezweifle, das ein zukünftiger Browser die Vorraussetzungen besitzt.

            Gruß,
            Dodwin

            PS: Jaja... @cc_on wäre besser ;)

            --
            Dodwin
  3. Hallo,

    ich habe folgendes Problem, ich möchte ein Script ausführen lassen, nur wenn es sich beim Browser um den Internet Explorer 6 oder niedriger handelt. Im Internet Explorer 7 soll es nicht ausgeführt werden.

    Browserüberprüfungen sind in den meisten Fällen unnötig und lassen sich selten zuverlässig umsetzen. Warum willst du denn IE 6 von IE 7 trennen bzw. in welcher Hinsicht? Es gibt wie gesagt allgemeine Methoden, die aber Schwierigkeiten mit sich bringen. Im konkretem Fall gibt es meist bessere Methoden, z.B. Objektabfragen.

    Mathias

    1. Browserüberprüfungen sind in den meisten Fällen unnötig und lassen sich selten zuverlässig umsetzen.

      Stichwort: Browserweiche. Würgg.

      Warum willst du denn IE 6 von IE 7 trennen bzw. in welcher Hinsicht? Es gibt wie gesagt allgemeine Methoden, die aber Schwierigkeiten mit sich bringen. Im konkretem Fall gibt es meist bessere Methoden, z.B. Objektabfragen.

      Wie bearbeitet denn der Profi die verschiedenen Browservarianten? Gibts da ein zuverlässiges Vorgehen oder ist es - wie ich vermute - jahrelange Erfahrung und ein schreckliches Frickeln (entsprechendes Frickelwissen vorausgesetzt)?

      Euer
      Ludger