Mario: Popup-Fenster nur einmal pro Sitzung erscheinen lassen

Wie gelingt es mir relativ einfach, ein Popup-Fenster nur einmal pro Sitzung erscheinen zu lassen?

  1. Moin, moin!

    Mir fallen die folgenden Lösungen ein:

    1. Frames

    In einem Frameset könnte z. B.
    links oben ein Logo,
    rechts oben eine Seitenüberschrift,
    links unten ein Menü und
    rechts unten der eigentliche Seiteninhalt stehen.

    Wenn sich beim Bewegen durch die Seitenhierarchie das Logo nie ändert, könnte im entsprechenden Frame das PopUp aufgerufen werden. Das würde also im schlimmsten Fall bei einem Reload der gesamten Seite erneut passieren.

    2. Cookie

    Durch das Ablegen eines Cookies, das bei Beendigung der Sitzung gelöscht wird, könnte das Erscheinen eines PopUps verhindert werden (Beispielcode gibt's auf Wunsch).

    3. Namensgebung des erzeugten Fensters

    Erhält ein PopUp-Fenster einen Namen und wird erneut versucht, ein PopUp mit dem selben Namen zu erzeugen, so wird das zuerst erzeugte Fenster neu beschrieben, es kommt also kein neues hinzu. Dies ist natürlich nur für einen Sonderfall eine Lösung.

    Alles klar?

    Norbert

    1. Moin, moin!

      Mir fallen die folgenden Lösungen ein:

      1. Frames

      In einem Frameset könnte z. B.
      links oben ein Logo,
      rechts oben eine Seitenüberschrift,
      links unten ein Menü und
      rechts unten der eigentliche Seiteninhalt stehen.

      Wenn sich beim Bewegen durch die Seitenhierarchie das Logo nie ändert, könnte im entsprechenden Frame das PopUp aufgerufen werden. Das würde also im schlimmsten Fall bei einem Reload der gesamten Seite erneut passieren.

      1. Cookie

      Durch das Ablegen eines Cookies, das bei Beendigung der Sitzung gelöscht wird, könnte das Erscheinen eines PopUps verhindert werden (Beispielcode gibt's auf Wunsch).

      1. Namensgebung des erzeugten Fensters

      Erhält ein PopUp-Fenster einen Namen und wird erneut versucht, ein PopUp mit dem selben Namen zu erzeugen, so wird das zuerst erzeugte Fenster neu beschrieben, es kommt also kein neues hinzu. Dies ist natürlich nur für einen Sonderfall eine Lösung.

      Alles klar?

      Norbert

      Hallo Mario,

      also hier auch noch eine elegante Lösung.

      Schreibe die nachfolgende Funktion, musst du aber auf deine Bedürfnisse anpassen, in jede Seite und lasse sie per onload-Handler aufrufen.

      <script language="JavaScript" type="text/javascript">
      <!--

      function pop_up()
      {
       if (window.name != "pop_up_schon_da")
       {
        window.name = "pop_up_schon_da";

      window.open("URL", "pop_up", "width=200,height=200");
       }
      }

      // -->
      </script>

      Wie geht das?

      Das Hauptfenster hat normalerweise keinen Namen oder je nach Browser "_top", "about:blank" oder eben auch leer "".

      Wir fragen also nach einem eindeutigen Namen.
      Wenn der nicht vorhanden ist, setzen wir diesen eindeutigen Namen und öffnen das Pop-Up-Fenster.

      Die nächste Seite fragt wieder, da aber der eindeutige Name schon gesetzt ist, wird kein Pop-Up-Fenster angezeigt.

      Auch bei reload wird die Anzeige verhindert.

      Du musst den Browser schon schliessen.

      elegant nicht.

      Die andere Variante wäre eine Zustandvariable an die URL hängen und diese jedesmal abfragen.
      Ihr Zustand bestimmt dann ob das Pop-Up-Fenster schon mal offen war oder nicht.

      Gruss, LenaLuna

  2. Hallo Mario,

    ich hatte mal das Problem, das ein Popup nur einmal am Tag erscheinen sollte. Ich habe das über einen Cookie geregelt, in dem ich das Datum abgespeichert habe. Infos über Cookies findest du hier: http://selfhtml.teamone.de/javascript/objekte/document.htm#cookie.

    Gruß,   Jürgen

    PS Leider hat der IE in unserer NT-Domaine jeden Tag eine neue Version des Cookies angelegt (xxx[n].txt). Daher habe ich das Popup (ein News-Fenster) dann ganz weggelassen.