Frille: Problem mit Fenstern

Hi,

ich habe ein kleines Javascript Problem bei der Programmierung mit Fenstern. Durch Klicken auf einen bestimmten Link soll ein separates Fenster
geöffnet werden. In diesem Fenster werden dann nacheinander mehrere Seiten angezeigt. Der Benutzer kann dann auch so zwischen den Fenstern hin-
und her springen. Wenn er also im Ursprungsfenster erneut auf der Link klickt, soll das separate Fenster nach vorne geholt werden. Leider lädt er dabei
dann immer die erste Seite neu. Ich weiss zwar, dass ich durch Weglassen des URL Parameters beim window.open dies unterbinden kann, doch wie
frage ich ab, dass dies separate Fenster schon existiert?

Hier das Coding:

if (window.preis == true)
{
preis = window.open("", "preisfenster",
                "resizable=no,toolbar,status,scrollbars=yes,width=630,height=400");
        preis.focus();
} else {
        preis = window.open("start.php3", "preisfenster",
                "resizable=no,toolbar,status,scrollbars=yes,width=630,height=400");
        preis.focus();
}

Mein Problem liegt bei der eingehenden If-Abfrage, da die beiden Programmteile jeweils alleine schon recht gut funktionieren. Es ist natürlich außerdem
wichtig, dass das Skript sowohl für Netscape 3 und 4 als auch für IE 3, 4 und 5 läuft. Opera ist nicht so wichtig...

Wer weiss Rat? Gerne auch per E-Mail. Danke.

Gruss,

Ralf

  1. Hi Ralf;

    doch wie
    frage ich ab, dass dies separate Fenster schon existiert?

    Hier das Coding:

    if (window.preis == true)
    {
    preis = window.open("", "preisfenster",
                    "resizable=no,toolbar,status,scrollbars=yes,width=630,height=400");
            preis.focus();
    } else {
            preis = window.open("start.php3", "preisfenster",
                    "resizable=no,toolbar,status,scrollbars=yes,width=630,height=400");
            preis.focus();
    }

    vielleicht irgendwie folgendermassen:

    preis = null;

    if (preis != null)
    if (!preis.closed)  
      {

    Gruss, Martin

    1. Hi Martin,

      vielleicht irgendwie folgendermassen:

      preis = null;

      if (preis != null)
      if (!preis.closed)  
        {

      Vielen Dank für den Tip, aber hat leider nicht so richtig geklappt. Wie ich es auch anstelle, ich bekomme es nur hin, dass er entweder immer den einen Zweig der If-Abfrage abarbeitet oder den anderen. Aber so wie ich es haben will, abhängig von der Existenz des Fensters die Zweige der If-Abfrage abzuarbeiten, klappt einfach nicht...

      Vielleicht hat noch jemand anderes eine Idee.

      Danke.

      Ralf

      1. Hi!

        Vielen Dank für den Tip, aber hat leider nicht so richtig geklappt. Wie ich es auch anstelle, ich bekomme es nur hin, dass er entweder immer den einen Zweig der If-Abfrage abarbeitet oder den anderen.

        Martin's Idee war eigentlich ganz richtig. Ich hoffe, Du hast nicht direkt nacheinander
            preis = null;
            if (preis != null)
        geschrieben?! Denn wenn Du preis auf null setzt, ist (preis != null) natuerlich immer false.

        Hier nochmal ausfuehrlicher, aber im Prinzip dasselbe, was Martin meinte:

        var preis = null;
            var preis_options = "resizable=no,toolbar,status,scrollbars=yes,width=630,height=400";

        function open_preis() {
                if (preis && (!preis.closed)) {             // falls Fenster schon geoeffnet und nicht wieder geschlossen
                    if (window.focus) preis.focus();        // fuer javscript-faehige Browser
                    else window.open ("", "preisfenster", preis_options);   // fuer IE3
                } else {                                    // falls Fenster noch nicht geoeffnet oder schon wieder geschlossen
                    preis = window.open("start.php3", "preisfenster", preis_options);
                }
            }

        IE5 macht laut Antje bei window.focus() irgendwelche Spinnereien, aber vielleicht liegt's ja an Ihrer Installation. Also probiers einfach mal aus, und wenn Du's nicht hinkriegst, musst Du halt nochmal fragen.

        Calocybe