Alexander: Opera wertet JS-Script aus, was es NICHT soll

Hallo,

ich habe ein Problem, was mir bisher noch nicht aufgefallen ist:

Ich nutze Opera 5.11 und lasse Opera auch als Opera "erscheinen" (siehe: Programm starten --> Datei --> Einstellungen --> Verbindung --> Browser-Identifikation --> Als Opera identifizieren lassen)

Er gibt sich auch schön brav beim Navigator-Object als Opera, samt Versionsnummer etc. pp. aus.

Dann habe ich ein Script geschrieben, was nur weiter ausgeführt werden soll, wenn es sich um einen IE handelt.

Kurzer Auschnitt:

if (navigator.appName.indexOf("Internet Explorer") && navigator.appVersion.substring(0,1) >= 4)  {  alert ("Hurra! Ein IE")  }

Opera wertet es aber trotz Opera-Identifikation aus (was es ja nicht soll, sonst ist der ganze Quark mit der Einstellung für die Katz), es kommt zu einen Fehler (auch wenn ich nur, wie im Beispiel, Standartfunktionen wie alert() nutze) und stürzt dann ab.

Sehe ich einen grundlegenden Fehler nicht, sind meine Augen zu eckig, oder ist Opera nun auch ein wenig buggy? Ich hoffe nicht...

Gruß

Alexander

  1. Hallo,

    ich würde zur Erkennung von Opera folgende Abfrage verwenden:

    if (navigator.userAgent.indexOf("Opera")!==-1) op=1

    Diese Abfrage hängt nicht von der Einstellung im Opera ab. Nicht ganz die Antwort auf deine Frage, evt. hilft es dir aber trotzdem weiter.

    Gruss Henry

    1. Diese Abfrage hängt nicht von der Einstellung im Opera ab. Nicht ganz die Antwort auf deine Frage, evt. hilft es dir aber trotzdem weiter.

      Das ist an sich aber kein schlechter Ansatz. Danke! :D

      So ist es sogar noch "sicherer", da dann das Script wirklich nur ausgeführt wird, wenn es definitiv ein IE ist, auch wenn ein Anwender den Opera als IE ausgibt.

      Hast mir sehr geholfen...

      Gruss <-- neue Rechtschreibung, oder?!?

      Alexander

      1. Hi Alexander,

        Gruss <-- neue Rechtschreibung, oder?!?

        Nö - in Gruß ist ein langer Vokal, deshalb bleibt das ß erhalten.

        SCNR ;-)

        Grüße,

        Utz

        PS: Ich schließe Opera im Augenblick mit der Abfrage nach getElementsByTagName aus, was die Version 5 nicht kann. Bin mir aber nicht 100% sicher ob Opera 5.11 das mittlerweile vielleicht kennt.

        1. Hallo Alex,

          das war nur Quelltext-Schreibweise!? Die Methode getElementsByTagName() kennt Opera nach http://www.opera.com/opera5/specs-js.html übrigens bereits in der Version 4.

          Gruß Henry

          1. Hallo Alex,

            das war nur Quelltext-Schreibweise!? Die Methode getElementsByTagName() kennt Opera nach http://www.opera.com/opera5/specs-js.html übrigens bereits in der Version 4.

            Gruß Henry

            Also mit getElementsByTagName() hab ich's noch nicht ausprobiert. Aber mit meiner bisherigen und leicht erweiterten Abfrage, die Henry vorgeschlagen hat, gibt es bei mir eigentlich keine Probleme.

            Aber von Zeit zu Zeit wertet Opera, egal welche Opera-Identifikation ich eingestellt habe, das Script doch aus (aber nur beim Programmstart des Browsers). Sehr komisch. Läuft Opera aber erst einmal, kann ich einstellen, was ich will, es funktioniert korrekt. Anscheinend doch ein Bug von Opera!

            Werd' ich mal im Auge behalten. Vielleicht ist er ja in der nächsten Version nicht mehr vorhanden :)

            Gruß <-- Jetzt wieder wie gewohnt *g*

            Alexander

            P.S.: Ach so, die Abfrage verwende ich nun:
            if (navigator.appName.indexOf("Internet Explorer") && navigator.appVersion.substring(0,1) >= 4  && navigator.userAgent.indexOf("Opera") == -1 )  {  alert("Hurra, ein IE")  }