KD-one: Verständnisfrage

Hallo,

Was genau machen die einzelnen Teile dieser Abfrage, bzw. wofür sind die gut?

newwindow=false; //wozu setzt man hier die Instanz auf "false"?//

function fenster(url,breite,hoehe)  
{  
if(newwindow&&newwindow.closed==false)
~~~//Wozu dient die Verknüpfung von "newwindow" und "newwindow.closed"? Soweit ich das verstehe, bezieht sich der erste Teil auf die Zeile vor der Funktion, wobei sich hier die Katze wieder in den Schwanz beisst.Mir fehlt hier einfach der Bezug zu der Frage, ob das Fenster geöffnet oder geschlossen ist, da ja "newwindow" in der ersten Zeile "false" ist.//  

newwindow.close()
newwindow = window.open(url,"newwindow","width="+breite+",height=" +hoehe+",left="+l+",top="+t+",scrollbars=0,resizable=0;");
newwindow.focus();

  
Das Script funktioniert klaglos, das ist ja nicht der Punkt. lediglich die Funktion der beschriebenen Teile ist ein wenig nebulös für mich. Ich würde gerne wissen, was mit den einzelnen Teilen erreicht wird.  
  
Gruß  
  
Kurt  

-- 
"Mut ist eine Tugend, doch Angst beweist Vernunft, Bewusstsein und Phantasie. Die Kunst ist es abzuwägen."  
  
<http://faq.united-web.at>  
<http://elektro-dunzinger.at>  
<http://shop.elektro-dunzinger.at>
  1. Hallo Kurt,

    Was genau machen die einzelnen Teile dieser Abfrage, bzw. wofür sind die gut?

    newwindow=false; //wozu setzt man hier die Instanz auf "false"?//

    das ist keine Instanz sondern eine globale Variable mit dem Namen newwindow
    Wissen muss man, dass alle Variablen innerhalb einer Funktion, die _nicht als Parameter übergeben wurden bzw. _nicht_ mit dem Schlüsselwort var deklariert werden automatisch globale Variablen sind. D.h. diese Variablen sind überall verfügbar und Änderungen werden an allen Stellen sichtbar.

    function fenster(url,breite,hoehe)
    {
    if(newwindow && newwindow.closed==false) //Wozu dient die Verknüpfung von "newwindow" und "newwindow.closed"?

    hier wird gefragt, ob die Variablen existiert und wenn ja, ob diese die Eigenschaft closed kennt.

    closed ist eine Eigenschaft, die beschreibt, ob ein ehemals geöffnete Fenster geschlossen wurde. Wenn das Fenster nicht geschlossen wurde, dann soll in dieser Funktion das Fenster geschlossen werden.

    newwindow.close()

    beim ersten Aufruf der Funktion ist der Wert der globalen Variablen newwindow noch false und deshalb wird auch der Befehl newwindow.close() nicht ausgeführt.

    Sondern gleich in diese Zeile gesprungen:

    newwindow = window.open(url,"newwindow","width="+breite+",height=" +hoehe+",left="+l+",top="+t+",scrollbars=0,resizable=0;");

    window.open() ist eine Methode, die eine Art Referenz auf das geöffnete Fenster zurückgibt. Und diese Referenz wird in der Variablen newwindow gespeichert.

    Über diese Variable kannst du alle Eigenschaften des geöffneten Fensters ansprechen. Beispielsweise durch den Aufruf der Methode:

    newwindow.focus();

    Wird die Funktion erneut aufgerufen, dann ist in der Variable newwindow immer noch die Referenz auf das geöffente Fenster gespeichert und damit ist auch die Eigenschaft closed vorhanden, die solange den Wert false beinhaltet wie das Fenster offen ist. Wird es vom Anwender geschlossen erhält diese Eigenschaft dann den Wert true.

    Viele Grüße

    Antje

    1. Hallo Antje,

      newwindow=false; //wozu setzt man hier die Instanz auf "false"?//
      das ist keine Instanz sondern eine globale Variable mit dem Namen newwindow
      Wissen muss man, dass alle Variablen innerhalb einer Funktion, die _nicht als Parameter übergeben wurden bzw. _nicht_ mit dem Schlüsselwort var deklariert werden automatisch globale Variablen sind. D.h. diese Variablen sind überall verfügbar und Änderungen werden an allen Stellen sichtbar.

      Ok, soweit klar, scheint ein Manko meinerseits zu sein, korrekt zu definieren. Ich war der Meinung, es handle sich um eine Fensterinstanz. Hast du einen Tip, wo man so grundlegende Sachen nachlesen kann? SELFHTML ist in dieser Hinsicht ja nicht gerade sehr ergiebig...
      Nichtsdestotrotz verstehe ich nicht, wozu das "=false" dient. Wenn die Variable auf false gesetzt wird, was passiert dann, wenn das Fenster dennoch geöffnet ist??? Bei Aufruf des Scriptes wäre newwindow ja dann immer false, oder passiert das dann nur, wenn die Variable innerhalb der Funktion definiert wäre? Wenn ja, stellt dieser Punkt dann also nur einen Anfangswert dar?

      function fenster(url,breite,hoehe)
      {
      if(newwindow && newwindow.closed==false) //Wozu dient die Verknüpfung von "newwindow" und "newwindow.closed"?
      hier wird gefragt, ob die Variablen existiert und wenn ja, ob diese die Eigenschaft closed kennt.

      Uups, schon wieder ein Definitionsproblem. Ich bin auch hier von falschen Voraussetzungen ausgegangen, weshalb ich den Sinn nicht verstanden habe. :-)

      closed ist eine Eigenschaft, die beschreibt, ob ein ehemals geöffnete Fenster geschlossen wurde. Wenn das Fenster nicht geschlossen wurde, dann soll in dieser Funktion das Fenster geschlossen werden.

      newwindow.close()
      beim ersten Aufruf der Funktion ist der Wert der globalen Variablen newwindow noch false und deshalb wird auch der Befehl newwindow.close() nicht ausgeführt.
      Sondern gleich in diese Zeile gesprungen:
      newwindow = window.open(url,"newwindow","width="+breite+",height=" +hoehe+",left="+l+",top="+t+",scrollbars=0,resizable=0;");
      window.open() ist eine Methode, die eine Art Referenz auf das geöffnete Fenster zurückgibt. Und diese Referenz wird in der Variablen newwindow gespeichert.
      Über diese Variable kannst du alle Eigenschaften des geöffneten Fensters ansprechen. Beispielsweise durch den Aufruf der Methode:
      newwindow.focus();
      Wird die Funktion erneut aufgerufen, dann ist in der Variable newwindow immer noch die Referenz auf das geöffente Fenster gespeichert und damit ist auch die Eigenschaft closed vorhanden, die solange den Wert false beinhaltet wie das Fenster offen ist. Wird es vom Anwender geschlossen erhält diese Eigenschaft dann den Wert true.

      Ok, nachdem ich nun oben so blöd nachgefragt habe bezüglich des Variablenwertes, habe ich es auch so nach dem zweiten durchlesen kapiert, wie das läuft. ;-)
      Ich danke dir für deine ausführliche Erklärung, die war, wie immer*, sehr hilfreich.

      * Ich erinnere an deine Hilfe bei meinem Menü. ;-)

      Danke und Gruß

      Kurt

      --
      "Mut ist eine Tugend, doch Angst beweist Vernunft, Bewusstsein und Phantasie. Die Kunst ist es abzuwägen."
      http://faq.united-web.at
      http://elektro-dunzinger.at
      http://shop.elektro-dunzinger.at