JavaScript Frage 2

Dieses Thema im Forum "Software" wurde erstellt von Harlekin, 25. Oktober 2001.

  1. Harlekin

    Harlekin Gast

    Habe eine Seite mit mehreren Frames, welche durch JavaScript aufgerufen wurde (liegt jetzt formatfuellend ueber der ersten Seite).
    Nun moechte ich diese Seite mit allen Frames per Link von einem Frame dieser Seite aus schliessen.
    Die normale window.close funktion greift hier nicht, es passiert gar nichts.
    Kennt jemand ein entsprechendes Script?

    .
     
  2. mikrokokkus

    mikrokokkus New Member

    Die Methode close() funktioniert nur bei aktiven Fenstern. Du mußt also vorher das im Hintergrund liegende Fenster mit der Methode focus() zum aktiven Fenster machen. Ich würde Dir aber insgesamt davon abraten, ein Fenster auf diese Weise zu schließen, da viele Browser (u.a. der IE unter Windows) mit den Standardeinstellungen dies als sicherheitsrelevanten Eingriff auffassen und mit einer Warnmeldung reagieren, die den unbedarften User abschrecken wird.
     
  3. Harlekin

    Harlekin Gast

    Vielen Dank fuer den Tip. Du hast recht, aber das erste original Fenster moechte ich gar nicht schliessen, sondern das, welches bereits durch JavaScript aufgerufen wurde und jetzt oben liegt und aktiv ist (focus).
    Das Problem ist, dass durch die Verwendung von Frames window.close in der normalen Weise nicht funktioniert.
    Ohne Frames funktionierts reibungslos.
    .
     
  4. mikrokokkus

    mikrokokkus New Member

    Ja, sorry, ich hab Dich tatsächlich mißverstanden. Trotzdem: ich kann mich täuschen, aber versuch mal den focus auf das FrameSET zu setzen und dann zu schließen.
     
  5. hannibal

    hannibal New Member

    Frames sprichst du mit parent an.
    Wenn Du von einem Fenster ein anderes schließen willst, dann mußt Du den Namen des Fenster ansprechen.

    window.open("adresse oder leer","hier der Name des neuen Fenster");

    jetzt kannst du den Namen verwenden, nachdem Du ihn erzeugt hast.

    Schau mal in self-html nach.
    Ist echt wichtig erst mal da zu schauen.

    Grüße
     
  6. Harlekin

    Harlekin Gast

    funktioniert auch nicht, es koennen Frames, aber nicht das FrameSet angesprochen werden.
     
  7. Harlekin

    Harlekin Gast

    Auch hiermit hatte ich keinen Erforg, da man mit parent, oder auch mit top, stets nur die einzelnen Frames erreicht, nicht aber das Fenster als ganzes.
     
  8. Harlekin

    Harlekin Gast

    Loesung (eine moegliche):

    Hatte jetzt Erfolg mit folgendem Trick:

    Man ruft aus dem gewuenschten Frame per Link eine neue blanco Seite ohne Frames auf und setzt diese mit Target als top.
    In diese Seite dann:

    . . .
    <script language="JavaScript">
    function beenden(){
    window.close()
    }
    </script>
    </head>
    <body onLoad="beenden()">
    . . .

    also ganz normal wieder schliessen.
    Vielleicht gibt es aber noch eine elegantere Loesung.

    .
     
  9. mikrokokkus

    mikrokokkus New Member

    FensterName' benannt hast.
    Kannst das Ganze natürlich auch im Body machen (ohne separate Funktion im Head).
     
  10. Harlekin

    Harlekin Gast

    Habe eine Seite mit mehreren Frames, welche durch JavaScript aufgerufen wurde (liegt jetzt formatfuellend ueber der ersten Seite).
    Nun moechte ich diese Seite mit allen Frames per Link von einem Frame dieser Seite aus schliessen.
    Die normale window.close funktion greift hier nicht, es passiert gar nichts.
    Kennt jemand ein entsprechendes Script?

    .
     
  11. mikrokokkus

    mikrokokkus New Member

    Die Methode close() funktioniert nur bei aktiven Fenstern. Du mußt also vorher das im Hintergrund liegende Fenster mit der Methode focus() zum aktiven Fenster machen. Ich würde Dir aber insgesamt davon abraten, ein Fenster auf diese Weise zu schließen, da viele Browser (u.a. der IE unter Windows) mit den Standardeinstellungen dies als sicherheitsrelevanten Eingriff auffassen und mit einer Warnmeldung reagieren, die den unbedarften User abschrecken wird.
     
  12. Harlekin

    Harlekin Gast

    Vielen Dank fuer den Tip. Du hast recht, aber das erste original Fenster moechte ich gar nicht schliessen, sondern das, welches bereits durch JavaScript aufgerufen wurde und jetzt oben liegt und aktiv ist (focus).
    Das Problem ist, dass durch die Verwendung von Frames window.close in der normalen Weise nicht funktioniert.
    Ohne Frames funktionierts reibungslos.
    .
     
  13. mikrokokkus

    mikrokokkus New Member

    Ja, sorry, ich hab Dich tatsächlich mißverstanden. Trotzdem: ich kann mich täuschen, aber versuch mal den focus auf das FrameSET zu setzen und dann zu schließen.
     
  14. hannibal

    hannibal New Member

    Frames sprichst du mit parent an.
    Wenn Du von einem Fenster ein anderes schließen willst, dann mußt Du den Namen des Fenster ansprechen.

    window.open("adresse oder leer","hier der Name des neuen Fenster");

    jetzt kannst du den Namen verwenden, nachdem Du ihn erzeugt hast.

    Schau mal in self-html nach.
    Ist echt wichtig erst mal da zu schauen.

    Grüße
     
  15. Harlekin

    Harlekin Gast

    funktioniert auch nicht, es koennen Frames, aber nicht das FrameSet angesprochen werden.
     
  16. Harlekin

    Harlekin Gast

    Auch hiermit hatte ich keinen Erforg, da man mit parent, oder auch mit top, stets nur die einzelnen Frames erreicht, nicht aber das Fenster als ganzes.
     
  17. Harlekin

    Harlekin Gast

    Loesung (eine moegliche):

    Hatte jetzt Erfolg mit folgendem Trick:

    Man ruft aus dem gewuenschten Frame per Link eine neue blanco Seite ohne Frames auf und setzt diese mit Target als top.
    In diese Seite dann:

    . . .
    <script language="JavaScript">
    function beenden(){
    window.close()
    }
    </script>
    </head>
    <body onLoad="beenden()">
    . . .

    also ganz normal wieder schliessen.
    Vielleicht gibt es aber noch eine elegantere Loesung.

    .
     
  18. mikrokokkus

    mikrokokkus New Member

    FensterName' benannt hast.
    Kannst das Ganze natürlich auch im Body machen (ohne separate Funktion im Head).
     
  19. hannibal

    hannibal New Member

    javascript:eek:pener.resizeTo(300,300);'>altes Fenster kleiner</a>");
    }

    function closeFenster ()
    {
    newWin.close();
    }
    // -->
    </script>
    </head>

    <body>
    <p><a href="javascript:neuesFenster();">NewWin</a></p>
    <p><a href="javascript:closeFenster ()">NewWinclose</a></p>
    </body>

    </html>

    Die Screen-Geschichten habe ich nur so reingeschrieben, weil die nächste Frage meistens ist, wie kann ich denn das Fenster so bewegen, daß es das alte nicht überdeckt etc.

    Also:

    Du kannst nur ein Fenster ansprechen, welches Du vorher erzeugt hast und mit einem Namen versehen hast.
    In dem Beispiel "newWin"

    heißt:

    window.open("link oder leer für ein leeres Fenster","Fenstername","optionale Parameter ohne Leerezeichen!!");

    <a href="#"onclick="newWin.close()">NewWinclose</a> oder
    <a href="javascript:newWin.close()">NewWinclose</a> oder
    <a href="javascript:closeFenster ()">NewWinclose</a>

    im Grunde brauchst Du für sowas keine neue Funktion zu schreiben, deswegen die beiden anderen Schreibweisen.

    Andersrum kannst Du vom neuen Fenster aus, das alte mit "opener", welches ein Schlüsselwort ist ansprechen.
    Deswegen habe ich zur Demonstration in das neue Fenster dynamisch einen solchen Befehl geschrieben.

    So weit so gut, ich hoffe das klappt

    Grüße
     
  20. Harlekin

    Harlekin Gast

    Vielen Dank fuer den ausfuehrlichen Tip, werde ich antesten.

    .
     

Diese Seite empfehlen