Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Odbiór nazwy pliku z window.opener
Forum PHP.pl > Forum > Przedszkole
zaiac
Witajcie,

Z formularza otwieram plik w nowym oknie:

  1. <form name="newUserPhotoForm" target="CropWindow" onsubmit="window.open('about:blank','CropWindow', 'width=800,height=600,scrollbars=yes,status=no'); return true;" action="PhotoCrop.php" enctype="multipart/form-data" method="post">
  2. <input type="file" name="file"/>
  3. <input type="submit" name="upload" value="Upload" />
  4. <img src= questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif />
  5. <input type="text" name="tmpUploadedFileName"/>
  6. <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
  7. </form>


W popupie wycinam kawałek zdjęcia, który zostaje zapisany na serwerze pod jakąś nazwą tymczasową i popup się zamyka.

window.opener.document.newUserPhotoForm.tmpUploadedFileName.value = tmpFilePath;

W polu tekstowym owszem wyświetla się nazwa zapisanego nowego pliku, ale jak są wpakować do img src?

Z góry dzięki za pomoc.
gulldarek
Np tak:

  1. window.opener.document.newUserPhotoForm.getElementsByTagName('img')[0].src = tmpFilePath;
zaiac
Spróbowałem - ale skrypt nie wykonuje się poprawnie.

Próbowałem też:

  1. <img name="tmpUploadedFilePath" />


i później:

window.opener.document.newUserPhotoForm.tmpUploadedFilePath.scr = tmpFilePath;

ale też nie działa zgodnie z oczekiwaniem.
gulldarek
Co dokladnie sie dzieje? Blad .js czy obrazek znika? Co konkretnie zawiera zmienna tmpFilePath?
zaiac
tmpFilePath to string ze sciezka do pliku - generuje sie poprawnie bo wyswietlam go na tym samym formularzu w textboxie.

wywala sie skrypt - jak zakomentuje tę nową linijkę to skrypt działa poprawnie (oczywiscie oprocz tego ze nie pokazuje sie obrazek na formularzu).
gulldarek
Ustaw id dla <img>, np.:

  1. <img id="myThumbnail" src="blank.gif" />


A nastepnie:

  1. window.opener.document.getElementById('myThumbnail').src = tmpFilePath;
zaiac
Też tak próbowałem:

<img id="tmpUploadedFilePath" src="../photo/aaa.gif"/>

window.opener.document.newUserPhotoForm.getElementById('tmpUploadedFilePath').src = tmpFilePath;

efekt ten sam sad.gif Dlatego też pytałem bo już mi ręce opadają sad.gif Bez tej linijki JSa wszystko działa....
gulldarek
Miedzy

  1. window.opener.document.newUserPhotoForm.getElementById('tmpUploadedFilePath').src = tmpFilePath;


a

  1. window.opener.document.getElementById('tmpUploadedFilePath').src = tmpFilePath;


jest duza roznica smile.gif

(getElementById() jest metoda dokumentu)

Edit: i jeszcze pytanie: jakiej przegladarki uzywasz? Konsola js wbudowana w Firefox powinna wystarczyc do zdebugowania tego typu problemu
zaiac
Działa... ale nie do końca - tzn skrypt się wykonuje ale nie zmienia się źródło fotki. Początkowy obrazek znika, a nowy się nie pojawia - ścieżka jest na 100% dobra.

Próbowałem tak:

var tmp = window.opener.document.getElementById('tmpUploadedFilePath');
tmp.setAttribute('src',tmpFilePath);

ale nie działa

PS - jak debugować ten błąd w FF o ktorym pisaliśmy?
Lejto
ściągnij sobie dodatek do firefoxa Firebug
zaiac
Ok dzięki.

A czy ktoś jest w stanie pomóc mi w sprawie niezmieniającego się zdjęcia?
lord_t
Masz to online? Ew. czy możesz dać online?
zaiac
Niestety pracuje na razie tylko lokalnie - kod nie wystarczy? smile.gif

  1. <form name="newUserPhotoForm" target="CropWindow" onsubmit="window.open('about:blank','CropWindow', 'width=800,height=600,scrollbars=yes,status=no'); return true;" action="PhotoCrop.php" enctype="multipart/form-data" method="post">
  2. <input type="file" name="file"/>
  3. <input type="submit" name="upload" value="Zmień" /><br />
  4. <img id="newUserPhoto" src="../photo/blank.gif"/><br />
  5. <input type="text" name="tmpUploadedFileName"/>
  6. <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
  7. </form>


JS który powinien zmienić fotkę:

  1. <?php
  2. function aaa(tmpFileName){
  3. tmpFilePath = '../photo/photo_tmp/' + tmpFileName;
  4. window.opener.document.newUserPhotoForm.tmpUploadedFileName.value = tmpFilePath;
  5.        
  6. var tmp = window.opener.document.getElementById('newUserPhoto');
  7. tmp.setAttribute('src',tmpFilePath);
  8.                
  9. window.close();
  10. return true;
  11. }
  12. ?>


W Firebugu na podglądzie widzę że ścieżka się zmieniła, ale w kodzie strony nadal jest src="../photo/blank.gif" no i obraz dopiero odświeża się wtedy jak kliknałem na obrazku prawym przyciskiem i dałem

window.opener.location.reload(); też nie działa tak jakbym chciał - odświeża cała stronę i powoduje wyświetlenie blank.gif

jakieś pomysły?
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.