Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

fenster schliessen

Diskussion: fenster schliessen im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige ich sitze seit ein paar tagen vor einem "banalen" problem und hab fast keine haare mehr auf dem kopf. ...

Antwort
Alt 23.06.06, 16:36   #1 (permalink)
 
Registriert seit: 13.01.06
ShadowFire Leistung: Facit NTK
Likes: 0
Standard fenster schliessen

Anzeige

ich sitze seit ein paar tagen vor einem "banalen" problem und hab fast keine haare mehr auf dem kopf.

ich möchte ein mit js geöffnetes fenster wieder schliessen:

Code:
<html>
<head>
  <script language="JavaScript"> 
      var fenster;
      function warte ()  {
       fenster = window.open ('./fenster.php', 'fenster', 'width=200,height=100,toolbar=no,scrollbar=no,status=no');
      }
      function windowclose ()  {
        
        var fenster.close ();
      }
  </script>
</head>
<body>
  <a href="?" onClick="warte();">open</a><br>
  <a href="?"onClick="windowclose();">close</a>
</body>
</html>
das fenster wird auch problemlos geöffnet - es lässt sich nur nicht mehr schliessen.
leider gibts auch keine fehlermeldungen. die dokus, die ich fand, haben letzten endes die selben beispiele beinhaltet.
währe jetzt für jede hilfe echt dankbar :)
ShadowFire ist offline   Mit Zitat antworten
Alt 23.06.06, 16:51   #2 (permalink)
DaWeed
Guest
 
Likes:
Standard

ich kenne mich mit js nich so aus aba so wie es bei dir aussieht müsstest du auf der seite wo der href hingeht die funktion window close einbauen ^^
weil so siehts für mich aus als könne man auf dieser seite entweder das fenster öffnen ODER das noch nicht offene fenster schließen
ich würd das dann irgendwie so lösen
Code:
<html>
<head> <!--das is die seite von der man aus startet OHNE die close funktion-->
  <script language="JavaScript"> 
      var fenster;
      function warte ()  {
       fenster = window.open ('./fenster.php', 'fenster', 'width=200,height=100,toolbar=no,scrollbar=no,status=no');
      }
      function windowclose ()  {
        
        var fenster.close ();
      }
  </script>
</head>
<body>
  <a href="?" onClick="warte();">open</a><br>
</body>
</html>
und dann wenn das fenster offen is auf dem den link mit close platzieren

Code:
 <html><!-- das is jetzt das offene fenster -->
 <head>name und js </head>
<body> <a href="?" onClick="windowsclose();>close</a> </body>
</html>
  Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 23.06.06, 17:27   #3 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Standard

ShadowFire:

Dein Script weist 2 Fehler auf:

1. In der Schließen-Funktion deklarierst du "fenster" nochmal, also muss das "var" da weg, damit die globale Variable verwendet wird, die am Anfang deklariert wird.

2. Damit diese Variable auch tatsächlich erhalten bleibt, musst du dich auf der gleichen Seite befinden wie beim klicken auf den Öffnen-Link. Das ist aber nicht gegeben, da du mit einem Aufruf von "?" die Seite neu lädst und damit die Variable "fenster" zerstörst.

Um das zu verhindern, gibt's nun mehrere Möglichkeiten, wie du die Links gestalten kannst. Entweder du rufst direkt JavaScript im href-Attribut auf:

Code:
<a href="javascript:warte()">open</a>
oder du musst im onclick EventHandler dafür sorgen, dass der Link nicht aufgerufen wird sondern nur die Funktion:

Code:
<a href="?" onclick="warte();return false">open</a>
Alternativ könntest du das href-Attribut auch auf die gleiche Seite setzen:

Code:
<a href="#" onclick="warte()">open</a>
Viele Wege führen nach Rom
__________________
"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

JS BB LX UP
LX ist offline   Mit Zitat antworten
Alt 23.06.06, 19:26   #4 (permalink)
Themenstarter
 
Registriert seit: 13.01.06
ShadowFire Leistung: Facit NTK
Likes: 0
Standard

LX:
genau da liegt das problem - die seite muss neu geladen werden:

Code:
<html>
<head>
  <script language="JavaScript"> 
     var fenster;
      function warte ()  {
       fenster = window.open ('./warten.php', 'fenster', 'width=200,height=100,toolbar=no,scrollbar=no,status=no');
       document.location.href ('zip.php?aktion=bla');
      }
      function windowclose ()  {
        
        fenster.close ();
      }
  </script>
</head>
<a href="?aktion=restore" onClick="javScript:warte()">backup</a>

<?php
if ($_REQUEST["aktion"] == "restore")  {  /* do restore */
  ?>
  <body onLoad="javaScript:windowclose()">
  <?php
  define("MYSQL", "/usr/local/bin/mysql");
  
  $array = gzfile("./test.gz");

  $target = fopen("./temp.sql", "w");
  foreach ($array as $line)  {
    if (!preg_match("/^\s$/", $line))  {
      fputs($target, $line);
    }
  }

  $sql = parse_ini_file("/devel/projects/restore/extern-libs/mysql.ini");
  mysql_connect($sql["HOST"], $sql["USER"], $sql["PASS"]);
  mysql_select_db($sql["DB"]);
  mysql_query("DROP DATABASE " . $sql["DB"]);
  mysql_close();
  
  system (MYSQL . " -h " . $sql["HOST"] . " -u " .  $sql["USER"] . " -p" .  $sql["PASS"] . " < ./temp.sql");
unlink ("./temp.sql");
  print "done";
  }
?>
das script läuft ziemlich lange (ca. 50 sekunden)
in der zeit soll lediglich eine meldung erscheinen, dass der benutzer warten soll.
diese meldung soll wieder verschwinden, wenn das script zu ende ist.

und bitte kein blame über das php-script - das wird noch schöner
ShadowFire ist offline   Mit Zitat antworten
Alt 23.06.06, 19:53   #5 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Standard

Warum lagerst du die Restore-Funktionalität dann nicht einfach in dein "Bitte warten"-Popup aus? Eine nicht ganz saubere, aber zumindest nett aussehende Lösung für dein Popup:

Code:
<html>
<head>
  <title>Bitte warten...</title>
</head>
<body>
<p>Wenn du dieses Fenster zumachst ist alles hin...</p>

<?php

// dein Restore-Zeugs

?>
<script type="text/javascript">
this.close();
</script>
</body>
</html>
Somit sieht der Benutzer die Meldung, dann wird dein Restore-Kram ausgeführt, und wenn der durchgerasselt ist, wird das Fenster automatisch geschlossen.

Unsauber isses, weil keine komplette HTML-Seite angezeigt wird, bis das PHP-Script durchgelaufen ist. Die meisten Browser zeigen aber auch unvollständige Seiten bereits an. Unsauber isses auch deswegen, weil goa nix passiert, wenn der Nutzer JavaScript deaktiviert hat
__________________
"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

JS BB LX UP
LX ist offline   Mit Zitat antworten
Alt 23.06.06, 20:08   #6 (permalink)
Themenstarter
 
Registriert seit: 13.01.06
ShadowFire Leistung: Facit NTK
Likes: 0
Standard

das hab ich zuerst auch versucht.
aber wie du schon sagtest, wird der content erst dann angezeigt, wenn das script abgelaufen ist. also fällt die idee leider weg.

da die anwendung js vorraussetzt, fällt das zweite problem auch weg:
wenn sie nicht gestartet werden kann, brauch ich auch kein wartehinweis

andere frage:
kann js beim klick eine grafik anzeigen und diese dann nach scriptablauf verschwinden lassen, oder stosse ich damit an das selbe problem?
ShadowFire ist offline   Mit Zitat antworten
Alt 23.06.06, 21:34   #7 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Lightbulb

Zitat:
Original von ShadowFire
aber wie du schon sagtest, wird der content erst dann angezeigt, wenn das script abgelaufen ist. also fällt die idee leider weg.
Naja okay, das Beispiel war etwas zu einfach gehalten. Es müssen noch 2 Voraussetzungen erfüllt werden:

1. Jegliches Output-Buffering von PHP und Apache muss deaktiviert sein.
2. Vorm Restore-Teil muss ein flush() dafür sorgen, dass der bisher generierte Output an den Browser gesendet wird.

Dann sollte das aber klappen.
__________________
"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

JS BB LX UP
LX ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » fenster schliessen
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Programm per batch minimieren und schliessen !? Lunandro Code Kitchen 4 24.06.05 16:05
2 router zusammen schliessen Metathron Network · LAN, WAN, Firewalls 7 10.05.05 21:36
Anleitung für die Ports 135,137,139 manuell schliessen Lami12 (In)security allgemein 9 05.04.05 14:25
Port 135 schliessen - wie? Zero Uncool (In)security allgemein 0 01.09.04 13:28
Port 123 NTP schliessen ? link (In)security allgemein 2 18.09.03 23:46


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61