Stefan Schönthal: Switch über LiveConnect übergebene Variable.

Hallo zusammen

Ich habe ein ziemlich komisches Phänomen und scheitere gerade kläglich daran dieses wegzubekommen.

Ich rufe aus meinem Java-Applet per LiveConnect eine Funktion in JavaScript auf. Folgend der etwas gekürzte JavaScript-Code der betreffenden Funktion:

function lc_ParticipantStatusChanged(participantID, participantCLIP, participantName, participantStatus){
            if(participantStatus == "connected"){
                alert("Spinn ich eigentlich?");
            }
            switch (participantStatus){
                case "connected" :
                    alert("nö, es funktioniert doch!");
                    break;

case "invited" :
                    break;

case "muted" :
                    break;

case "idle" :
                    break;

default: alert("definitiv!");
                    break;
            }
        }

Wird nun für participantStatus der Wert "connected" übergeben, würde ich die Alerts "Spinn ich eigentlich" gefolgt von "nö, es funktioniert doch!" erwarten. Was auch unter Verwendung von IE 7 so ist. Nehme ich aber einen FireFox oder einen Safari erhalte ich folgende 2 Alerts: "Spinn ich eigentlich" gefolgt von "definitiv!".

Kann mir das jemand erklären? Wenn ich die gleiche Funktion von JavaScript aus aufrufe und "connected" übergebe, klappt das Ganze.
Mir scheint als würde das Switch-Konstrukt bei einigen Browsern einen leicht anderen Vergleich ausführen als das IF-Konstrukt.

Jemand eine Idee oder hatte das Problem auch schon einmal und weis vielleicht eine Lösung?

mfg
Stefan Schönthal

  1. Kann mir das jemand erklären? Wenn ich die gleiche Funktion von JavaScript aus aufrufe und "connected" übergebe, klappt das Ganze.
    Mir scheint als würde das Switch-Konstrukt bei einigen Browsern einen leicht anderen Vergleich ausführen als das IF-Konstrukt.

    Hi,

    hast du dir participantStatus vor der Case-Abfrage mal in einer AlertBox anzeigen lassen ob das alles noch richtig drin steht? Vielleicht ändert sich ja an der Groß-Klein-Schreibung irgendwas beim übergeben. Wobei dann eigentlich schon die IF-Abfrage nicht ziehen dürfte... Ansonsten würde ich anstatt strings mal versuchen dads ganze in Integern zu übertragen, nur mal zum testen ob es dann zieht. Also zb. connected = 1 und dann halt auf 1 abfragen.

    1. Hi Andreas

      Jep, habe ich gemacht, also das mit dem anzeigen des Inhalts von participantStatus per Alert-Box. Das Resultat kannst Du Dir denken, da stand "connected" drin ;-)

      Das mit den Integern ist sicherlich eine Möglichkeit, wie es auch möglich wäre das Ganze ausschliesslich über IF/ELSE-Konstrukte abhandeln zu können. Nur möchte ich erstens ungern auf Werte die "etwas aussagen" verzichten und zweitens keine 20 IF/ELSE-Blöcke haben ;-)

      Aber danke für Deine Antwort.

      mfg
      Stefan