Sprachauswahl mit Variablen-Übergabe

harrry

Erfahrenes Mitglied
Hallo,
ich versuche, aus einer swf auf meiner "Startseite" die Hauptseite zu öffnen und dabei dem Benutzer eine Sprachauswahl zu ermöglichen:
PHP:
lv = new LoadVars();
lv.deutsch = "content_de.xml";
lv.englisch = "content_en.xml";

enterDeutsch.onPress = function() {
    lv.sendAndLoad("deutsch.php", lv, "POST");
    getURL("javascript:popup('dieseite.html')");
};
enterEnglisch.onPress = function() {
    lv.sendAndLoad("englisch.php", lv, "POST");
    getURL("javascript:popup('dieseite.html')");
};
Dann sollen die Vars mit PHP übergeben...
PHP:
//===================================

PHP DEUTSCH:

<?php
echo $"newLanguage=deutsch";
?>


//===================================

PHP ENGLISCH:

<?php
echo $"newLanguage=englisch";
?>
...und im Hauptfilm die entsprechende content_xx.xml eingelesen werden:
PHP:
function setLanguage() {
    var lv = new LoadVars();
    lv.onLoad = function() {
        trace(this.newLanguage);
    };
    lv.load("vars.php", "POST");
    mein_xml = new XML();
    mein_xml.ignoreWhite = true;
    mein_xml.load(newLanguage);
    //testText.text = newLanguage;
    mein_xml.load("newLanguage");
    mein_xml.onLoad = function(status) {
        if (status) {
            content_xml = mein_xml.firstChild.childNodes;
            delete mein_xml;
            readContent();
        }
    };
}
setLanguage();
Es geht aber nicht, was wahrscheinlich an den (grob geschätzten) 27 Fehlern im Skript liegt. Und ich hege die vage Vermutung, dass alles viel einfacher ginge. Wer hilft mir auf die Sprünge?
 
Hi,

mir ist nicht ganz klar, was Du genau vorhast, bzw. wie Dein Setup aussieht.

Dein augenblicklicher Ansatz mache jeden Falls nicht viel Sinn:

In der ersten Flashdatei rufst Du eine von zwei PHP-Dateien auf, die nichts weiter machen, als einen String auszugeben (btw: was soll das "&" nach dem "echo"?).

Die Ausgabe des PHP-Scripts wird aber nirgendwo verarbeitet.

In der zweiten Flashdatei holst Du Dir die Ausgabe einer "vars.php" - was diese Datei ausgibt bzw. was sie mit den ersten beiden PHP-Scripten zu tun hast, gibst Du allerdings nicht an.

Wenn die Hauptseite in einem Popup geöffnet werden, und die Sprache nicht als Parameter in der URL auftauchen soll (andernfalls könnte man die Variablen einfach an die Hauptseite übergeben), würde ich mit einem SharedObject arbeiten:
Code:
// Auf der Einstiegsseite:

var so = SharedObject.getLocal("language");

enterDeutsch.onPress = function() {
  so.data.src = "deutsch.xml";
  doSubmit();
}

enterEnglisch.onPress  = function() {
  so.data.src = "english.xml";
  doSubmit();
}

function doSubmit() {
  so.flush();
  getURL("javascript:popup('dieseite.html')");
}
Code:
// Auf der Hauptseite:

var so = SharedObject.getLocal("language");

var xm = new XML();

xm.ignoreWhite = true;

xm.onLoad = function() {
  // hier Deine XML-Verarbeituung
}

xm.load(so.data.src); // ist entweder "deutsch.xml" oder "english.xml"

Gruß
.
 
Shared Object? Flush? Toll...

Habe es versucht, klappt aber nicht ganz. Die xml wird nicht angezeigt und nach dem Klick erscheint in der Adresszeile der Einstiegsseite plötzlich der JavaScript-Aufruf und im Body steht "false"...

Ach ja und das neue Fenster geht nur auf, wenn ich "java_script" ohne den Unterstrich notiere, also "javascript".

Würdest Du denn mal kurz reinschauen, wo es hakt? Wäre wie immer sehr dankbar!
 

Anhänge

Lieber Tobias,
wollte mich nur diskret mit meinem Problemchen in Erinnerung rufen... vielleicht geht sich's ja mal aus, daß Du reinschaust...?
Lg h.
 
Hi,

sorry, das war mein Fehler: Ich hatte übersehen, dass Du beim Zugriff auf ein gemeinsames SharedObject über zwei verschiedene Flashfilme einen identischen localPath angeben musst.

Schreibe es in beiden Dateien so:
Code:
var so = SharedObject.getLocal("language", "/");

Gruß
.
 
Hi Tobias,

vielen Dank, die Übergabe der Variablen klappt nun!

Letztes Problem: Mit der neu aufgehenden Seite ist alles in Ordnung, aber: Die Adressleiste der Startseite springt nach dem Öffnen des Popups automatisch auf:
PHP:
javascript:popup('meineSeite.html')
Und die swf verschwindet, dafür steht im HTML-body:
PHP:
false
Kriegt man das denn auch noch weg?
 
Tatsächlich, bestens! Lieben Dank!

Hatte schon versucht, es herauszunehmen, aber ich dachte, man muss auch das
PHP:
if (window.focus) {newwin.focus()}
}
wegstreichen. Aber anscheinend funktioniert es nur dann, wenn man NUR das "return:false" streicht und die anderen Angaben stehen lässt. Warum eigentlich? Ich dachte, das ist bloß eine if-Funktion... und die ist ja nun leer...
 
Hi,

kann ich mir eigentlich nicht vorstellen, dass dies einen Unterschied macht. Ich werde die Funktion bei Gelegenheit noch einmal testen.

Übrigens: Ich würde statt der getURL-Methode immer ExternalInterface.call() verwenden - damit bist Du auf jeden Fall vor unerwünschten Ausgaben sicher.

Gruß
.
 
Zurück