Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zamykanie okna jakiego jeszcze nie było :)
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
webtg
Witam!

Mam taki problem,
Przy łądowaniu pliku ślicznie otwiera mi się okinko z informacją, że plik jest ładowany, problem tylko jak je zamknąć.

Chciałbym je zamknąć drugim plikiem - nie bardzo chce mi działać wskazanie pliku ani jego okno. Gónie brak pomysłu.

Zasda jest prosta:
form.php otwiera a add.php zamyka

Z JS u mnie kiepsko więc zwracam się do eksertów. Poradzicie coś ?
NoiseMc
W otwieranym oknie dajesz:

  1. <title>Trwa przesyłanie zdjęcia</title>
  2. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  3. <link href="css/style.css" rel="stylesheet" type="text/css">
  4. <script language="javascript">
  5. function zamknijSie(){
  6. if(window.opener.document.getElementById('poPrzeslaniu').value != ''){
  7. window.close();
  8. }
  9. setTimeout("zamknijSie()",30);
  10. }
  11. </head>
  12. <body onLoad="zamknijSie()">
  13. <table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0" align="center">
  14. <tr valign="middle">
  15. <td align="center"><img src="przesylanie.gif" width="120" height="45"></td>
  16. </tr>
  17. </body>
  18. </html>


Robisz formularz z polem pliku -> przy nacisnięciu na przycisk "wyślij" odpalasz popup z w/w kodem.
Po przesłaniu pliku umieszczasz w oknie otwierającym np. komunikat, że plik został przesłany oraz gdzieś w kodzie html:

  1. <input type="hidden" name="poPrzeslaniu" id="poPrzeslaniu" value="true">


Popup sprawdza sobie co jakiś czas (chyba 30 milisekund nie pamiętam) czy w otwierającym go dokumencie jest obiekt o ID: poPrzeslaniu i jeżeli go znajdzie to się zamyka biggrin.gif
webtg
Propozycja ciekawa, ale coś za szybko zamyka się to okno, żeby nie powiedzieć że w momencie smile.gif

Przetestowałeś to u siebie ?

Coś to zamykanie za szybko działa, może jakoś to dopracujesz ? Będę Twoim dłużnikiem

A może po prostu tak szybko zmienna zostaje przekazana z formularza (zanim doleci plik) ?
NoiseMc
No ja robie tak:

formularz.html

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <title>Formularz</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  4. </head>
  5.  
  6. <form method="post" action="upload.php" onSubmit="otworzJakosPopup()">
  7. <input name="Plik" type="file">
  8. </form>
  9. </body>
  10. </html>


W tym momencie otwierany jest popup z informacją, że plik jest właśnie przesyłany. W tym czasie dane są wysyłane na serwer i plik upload.php nie zaczyna jeszcze działać bo serwer dopiero przyjmuje żądanie. Tak więc popup cały czas szuka sobie zmiennej "poPrzeslaniu" ale jej nie znajduje bo window.opener jest pusty.

Dopiero kiedy plik zostanie przesłany na serwer skrypt jest uruchamiany i odpowiednio obsługuje plik i wyrzuca do przeglądarki HTML wraz z polem hidden "poPrzeslaniu". Skrypt w popupie cały czas odwołując się do okna z którego został otworzony wkońcu znajduje zmienną "poPrzeslaniu" i się zamyka biggrin.gif

upload.php

  1. <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
  2. <html>
  3. <head>
  4. <title>Formularz</title>
  5. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\">
  6. </head>
  7.  
  8. <body>
  9. <?php
  10.  
  11.  /*
  12. * Tu obsługa przesyłanego pliku
  13. */
  14. ?>
  15. <input type=\"hidden\" name=\"poPrzeslaniu\" id=\"poPrzeslaniu\" value=\"true\">
  16. </body>
  17. </html>
webtg
OK, Wielkie dzięki, już wiem czego nie zrozumiałem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.