AndreD: bei bedarf automatisches popup unterdrücken

hallo,

es soll nach einer gewissen zeit ein popup auf einer seite geöffnet werden, falls das popup jedoch bereits über einen link geöffnet wurde soll es sich nicht mehr automatisch öffnen. hier mal mein lösungsansatz:

<script type="text/javascript>"

//wird auf true initialisiert
einblenden = true;

//funktion zum oeffnen eines popups, wird diese aufgerufen wird "einblenden" auf false gestellt.
function popup(newin,x,y,breite,hoehe)
{
  einstellungen = "menubar=0,status=0,resizable=0,scrollbars=0,width="+breite+",height="+hoehe+",top="+y+",left="+x;

Fenster = window.open(newin,"diashow",einstellungen);
  Fenster.window.focus();
  einblenden = false;
}

//soll nur ausgefuehrt werden wenn "einblenden" true ist
function wait(newin,x,y,breite,hoehe)
{
  if(einblenden)
  {
    window.setTimeout("popup('" + newin + "'," + x + "," + y + "," + breite + "," + hoehe + ")",5000);
  }
}

</script>

leider wird das fenster immer neu geladen, obwohl doch die variable "einblenden" auf false gesetzt wird und somit die untere if-schleife nicht funktionieren sollte? Über eine alert-Ausgabe habe ich das auch schon überprüft, "einblenden" ist false und trotzdem wird das popup über die funktion wait geöffnet...

Bin leider nicht wirklich der Checker in Javascript, wer mir kann da weiterhelfen?

Danke & Gruss
AndreD

  1. //soll nur ausgefuehrt werden wenn "einblenden" true ist
    function wait(newin,x,y,breite,hoehe)
    {
      if(einblenden)
      {
        window.setTimeout("popup('" + newin + "'," + x + "," + y + "," + breite + "," + hoehe + ")",5000);
      }
    }

    </script>

    Ich bin nicht ganz sicher, ob ich dass nicht mit einer anderen Sprache verwechsel, aber if(einblenden) bewirkt doch nur, dass wenn einblenden gesestz ist die folgenden anweisungen ausgeführt werden.
    Versuch es einfach mit if(einblenden==true) oder
    if(einblenden!=false)

    1. Hallo,

      Ich bin nicht ganz sicher, ob ich dass nicht mit einer anderen Sprache verwechsel, aber if(einblenden) bewirkt doch nur, dass wenn einblenden gesestz ist die folgenden anweisungen ausgeführt werden.
      Versuch es einfach mit if(einblenden==true) oder
      if(einblenden!=false)

      da "einblenden" eine boolsche variable ist, sollte das schon funktionieren.
      allerdings wird sowas besser darüber gelöst, dass beim öffnen des popups ein name vergeben wird und dann abgefragt wird, ob ein fenster mit diesem namen schon existiert.

      ich würde einfach mal auf einschlägigen popup- verseuchten seiten rumsurfen und da gucken, wie die das gelöst haben.

      freundl. grüsse aus berlin, Raik

      1. Hallo Raik,

        da "einblenden" eine boolsche variable ist, sollte das schon funktionieren.

        Sehe ich auch so, auch wenn ich mich in JS nicht so doll auskenne, sollte das doch genau so wie bei anderen Programmiersprachen funktionieren...

        allerdings wird sowas besser darüber gelöst, dass beim öffnen des popups ein name vergeben wird und dann abgefragt wird, ob ein fenster mit diesem namen schon existiert.

        Ich weiss das dieses Fenster "diashow" heisst, wenn ich einen alert( this.name ); im Fenster mache, wird auch "diashow" ausgegeben. Dummerweise funktioniert das nicht wenn ich versuche den Namen des Popups über z.B. document.window.Fenster.name anzusprechen, wobei ja das Popup beim erzeugen in der Funktion in die Variable "Fenster", gespeichert wird und somit IMHO als Objekt verfügbar sein sollte?

        ich würde einfach mal auf einschlägigen popup- verseuchten seiten rumsurfen und da gucken, wie die das gelöst haben.

        Hmm ok, auch eine Lösung aber mich würde halt lieber interessieren warum eine - in meinen Augen - korrekte Lösung nicht funktioniert?

        Gruss AndreD

    2. hi,

      Versuch es einfach mit if(einblenden==true) oder
      if(einblenden!=false)

      Ist IMHO das gleiche, einblenden wird von mir am Anfang als boolescher Wert auf true gesetzt und somit ist die if-Bedingung wahr, also machen. Beim Durchlauf wird die Variable auf false gesetzt, bei erneutem Aufrufen sollte eigentlich der if-Bedingung somit nicht mehr aufgerufen werden!

      Gruss AndreD