Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Jak zmierzyć wielkość iframe ? Ramka pływająca .
Forum PHP.pl > Forum > Przedszkole
fiasko
Próbuje jakoś zmierzyć w jq lub js wielkość ramki. Muszę mieć szerokość kontekstu będącej zawartością pływającej ramki .

[JAVASCRIPT] pobierz, plaintext
  1. var wymiar = $("#iframe").contents().find("body").width();
[JAVASCRIPT] pobierz, plaintext


To powyżej zwraca mi tylko wielkość ramki, a nie zawartego w niej kontekstu. Można to jakoś zmierzyć ?
wNogachSpisz
Ahym, nie wiem jak w jQuery jest z obsługą ramek.

Ostatnio troche się bawiłem, wychodziły cuda szczególnie kiedy nie ładowałem do ramki żadnego SRC a tylko manipulowałem zawartością z okna-rodzica.

Mimo że temat dotyczy - delikanie rzecz ujmując - czegoś innego, to skorzystam z okazji coby się swoimi doświadczeniami podzielić.

Przeglądarką która najgorzej radzi sobie z manipulowaniem iframe jest w mojej ocenie FireFox, po niej IE a dalej safari a najlepsza jak zwykle Opera.

Zacznijmy od rzeczy prostych, tworzymy element iframe
[JAVASCRIPT] pobierz, plaintext
  1. var iframe = document.createElement('iframe')
[JAVASCRIPT] pobierz, plaintext


Następnie dopisujemy go do dokumentu
[JAVASCRIPT] pobierz, plaintext
  1. $('body').append(iframe)
[JAVASCRIPT] pobierz, plaintext


W tym miejscu kończą się przyjemności, a zaczyna się skrytpowa wojna...
Pierwsza rzecz to wystepowanie elementu BODY w naszej ramce..
Pod IE taki element nie istnieje, przez co potrzebny jest w tym miejscu mały trik:
[JAVASCRIPT] pobierz, plaintext
  1. var undef
  2. var iframeDocument = iframe.contentWindow.document
  3. if ( undef == iframeDocument.body ) {
  4. var body = document.createElement('body')
  5. iframeDocument.appendChild(body)
  6. }
[JAVASCRIPT] pobierz, plaintext


I teraz najgorsze... jeśli pod FF będziemy chcieli niezwłocznie (proceduralnie w następnej linii) uzyskać dostęp do elementu body wewnątrz iframe, to uwaga... nie znajdizemy go tam! Niezbędne jest uruchomienie instrukcji po Timeoucie...

[JAVASCRIPT] pobierz, plaintext
  1. alert( iframe.contentWindow.document.body ) // undefinied
  2. setTimeout(function(){
  3. // dopiero tutaj możemy pracować na iframe
  4. alert( iframe.contentWindow.document.body ) // HTMLElementBody... czy coś takiego..
  5. }, 1)
[JAVASCRIPT] pobierz, plaintext


Rzeźnia co nie?

No dobra, dosyć o mnie, mam do Ciebie pytanie.
Czy ramka prowadzi do dokumentu (src)
Jeśli tak to czy ten dokument znajduje sie na innej domenie?
fiasko
U mnie jest to ta sama domena, a zawartość dodaje przez .append() w jq. Czyli generalnie zwartość iframe to ja sobie w jquery tworzę.




A z tego jakoś nie można odczytać ?

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. attr('scrollHeight')
  3.  
  4.  
[JAVASCRIPT] pobierz, plaintext


Dobra zamykam przewód sądowy mam poprawne obliczenia pod IE , FF , oraz operą . Reszta mnie wali .

[JAVASCRIPT] pobierz, plaintext
  1.  
  2.  
  3. $(document).ready(function() {
  4.  
  5.  
  6.  
  7.  
  8. setTimeout(function(){
  9. var height_y = parseInt($('#myFrame').contents().find('body').attr('scrollHeight'));
  10. alert( height_y);
  11. },1500);
  12.  
  13.  
  14.  
  15. });
[JAVASCRIPT] pobierz, plaintext



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.