Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: <iframe> odwołanie do wartości <div>
Forum PHP.pl > Forum > XML, AJAX
Raptor1
Witam

Mam taki problem. Chciałbym pobrać wartość div'a który znajduje się wewnątrz ramki iframe. Próbowałem na różne sposoby ale widać nie udało mi się trafić na odpowiedni sad.gif. Poniżej fragment kodu.

  1. function getdivvalue()
  2. {
  3. alert(parent.document.getElementById("ramka_test").contentDocument.body.getElementById("aktualny_plik").value);
  4. }
  5. <iframe onload='getdivvalue();' src='http://xxx/xxx/xxx.php' id='ramka_test' name='ramka_test'></iframe>


A tu plik do którego się odwołuje ramka

  1. <?
  2. $a = file_get_contents('aaa.txt');
  3. echo "<div id='aktualny_plik' name='aktualny_plik'>$a</div>";
  4. ?>


Na razie chcę się odwołać i ewentualnie pobrać wartość $a która jest w div'ie o id aktualny_plik.

Prosiłbym o pomoc.
wlamywacz
  1. document.getElementById('jakiesid').innerHTML
Rafal Filipek
Cytat(wlamywacz @ 20.02.2009, 19:25:04 ) *
  1. document.getElementById('jakiesid').innerHTML

co dokładnie ma zrobić ten kod ? i co on ma wspólnego z iframe ?
Kod
document.getElementById('iframe_id').contentWindow.document.getElementById('jakis_div_id');
Raptor1
Witam

Jeśli chodzi o

  1. document.getElementById('jakiesid').innerHTML


to nie bardzo chce działać jak zrobiłem alerta to nic mi nie pokazało (oczywiście podmieniłem id smile.gif )
Poza tym jak mi się zdaje to raczej najpierw muszę obiektowo dostać się do kodu z tej ramki ale nie bardzo mam pomysł jak.

Głównie chodzi mi o to że mam 2 strony a i b. Na stronie a mam jakiś div w którym zawarta jest wartość powiedzmy 10. Implementując ramke ze stroną a do strony b mogę wyświetlić wartość div'a w tej ramce. Ale chodzi o to że ja chce pobrać ta wartość do zmiennej w php czy w java i porównać z inną wartością. Żeby to zrobić jak sądzę muszę pobrać value danego div'a w ewentualnie innerHTML pobrać zawartość div'a w którym była by tylko ta wartość. Ale jak dostać się do kodu z ramki? sciana.gif

Może macie jakiś pomysł ewentualnie podpowiedź.
Rafal Filipek
sprawdzales moj kod ?
Kod
document.getElementById('iframe_id').contentWindow.document.getElementById('jakis_div_id');
Raptor1
Sprawdziłem ale albo ja coś robię źle albo nie działa. Stawiam na to że to ja coś pokiełbasiłem więc podaje przykład jaki zrobiłem i który jest fizycznie na serwerze.

  1. <? $aktualny = file_get_contents('xxx.txt');
  2. echo "<div id='aktualny_plik' name='aktualny_plik' value='aaa'>$aktualny</div>";
  3. ?>


Teraz drugi plik na innym serwerze. W pliku tym próbowałem wywołać alertem wartość ale coś nie zatrybił sad.gif

  1. $start = "
  2. <html>
  3. <body>
  4. <iframe id='iframe_id' src='http://soft-media.pl/czat/aktualny.php'></iframe>
  5. var test;
  6. test=document.getElementById('iframe_id').contentWindow.document.getElementById('aktualny_plik').value;
  7. alert(test);
  8. </script>
  9. </body>
  10. </html>
  11. ";
  12. echo $start;


Ps. Podałem wszystko tak jak jest u mnie ścieżki też są prawdziwe więc można sprawdzić co i jak.
Rafal Filipek
taaa no super ale
Kod
echo "<div id='aktualny_plik' name='aktualny_plik'>$a</div>";
na 100% nie zawiera w sobie prawidlowego dokumentu html. co niby mialoby byc tutaj tym document ? musisz do iframe wpakowac dokument html a nie samego div'a.
bigZbig
Cytat(Rafal Filipek @ 25.02.2009, 00:04:55 ) *
taaa no super ale
Kod
echo "<div id='aktualny_plik' name='aktualny_plik'>$a</div>";
na 100% nie zawiera w sobie prawidlowego dokumentu html. co niby mialoby byc tutaj tym document ? musisz do iframe wpakowac dokument html a nie samego div'a.


Oj mylisz się zawiera content dokumentu xxx.txt

Natomiast test=document.getElementById('iframe_id').contentWindow.document.getElementById('aktualny_plik').value; zwróci w tym wypadku 'aaa' a nie o to chyba chodzi. Zamiasta value powinno być coś innego
Rafal Filipek
Ja wiem co zawiera ramka i wiem ze tak jak napisał to Raptor1 nie będzie działało. Nie odwołasz się tak do div'a nie mając dokumentu html w ramce. Btw. pisanie, że
Kod
document.getElementById('iframe_id').contentWindow.document.getElementById('aktualny_plik').value

zwórci aaa woła o pomste do nieba exclamation.gif takie coś nie ma prawa działać. Aby pobrac zawartość elementu html ( i nie chodzi o value pola input ) nalezy użyć np innerHTML. Myślałem że Raptor1 sam wykaże odrobinę inicjatywy.
Tak wię reasumując, nie mylę się.
Raptor1
Rafał masz racje, choć z tą inicjatywą to nie do końca tak. Nie każdy jest urodzonym programistą (jak widać na załączonym kodzie smile.gif ). To było tylko jedno z zestawień jakie próbowałem. Fakt nie pomyślałem że po drugiej stronie nie ma faktycznie prawidłowego dokumentu html. Z innerHTML to już wiedziałem wcześniej żeby tego użyć ale mój problem polega na tym że nie umie dostać się do elementów z ramki obojętnie czy to do value czy do tekstu między znacznikami. Zmieniłem kod na serwerze na
  1. <?
  2. $aktualny = file_get_contents('aktualny_wpis.txt');
  3. echo "<html><head></head><body><div id='aktualny_plik' name='aktualny_plik' value='aaa'>$aktualny</div></body></html>";
  4. ?>


Natomiast po drugiej stronie jest coś takiego.

  1. <?
  2.    $start = "
  3.    <html>
  4.    <head>
  5.    </head>
  6.    <body>
  7.    <iframe id='iframe_id' src='http://soft-media.pl/czat/aktualny.php'></iframe>
  8.    <script>
  9.        var test;
  10.        test=document.getElementById('iframe_id').contentWindow.document.getElementById('aktualny_plik').innerHTML;
  11.        alert(test);
  12.    </script>
  13.    </body>
  14.    </html>
  15.    ";
  16.    echo $start;    
  17. ?>


Przy tym zestawieniu nie wywołuje się alert więc to

  1. test=document.getElementById('iframe_id').contentWindow.document.getElementById('aktualny_plik').innerHTML;


zamieniłem na

  1. test=document.getElementById('iframe_id').contentWindow.document.body.innerHTML;


I wyświetliła mi się pusta ramka co oznacza że nie dostałem się do środka ( jak sądzę )
Tak czy owak nie działa tak jak by miało. Proszę o jakieś wskazówki.

Ps. Jestem początkujący w java script więc proszę o wyrozumiałość.
Rafal Filipek
a wstaw ten skrypt tak,
Kod
function test(){
       var test;
       test=document.getElementById('iframe_id').contentWindow.document.getElementById('aktualny_plik').innerHTML;
       alert(test);
}

i wstaw tą funkcje w onload dla iframe
Kod
<iframe id='iframe_id' src='http://soft-media.pl/czat/aktualny.php' onload="test()"></iframe>

tylko wstaw tą funkcje js przed ramką zeby na 100% była załadowana.
Raptor1
Hmn sciana.gif

Wkleiłem to na żywca żeby nie było żadnych przekłamań ani literówek. po przeładowaniu dalej nic. Kod źródłowy strony po przeładowaniu wygląda tak.

  1. <head>
  2. </head>
  3. <body>
  4. function test(){
  5. var test;
  6. test=document.getElementById('iframe_id').contentWindow.document.getElementById('aktualny_plik').innerHTML;
  7. alert(test);
  8. }
  9. </script>
  10. <iframe id='iframe_id' src='http://soft-media.pl/czat/aktualny.php' onload="test()"></iframe>
  11.  
  12. </body>
  13.  
  14. </html>


Już nie wiem w sumie powinno działać a nie działa. Ten drugi serwer jest u mnie w domu na xp odpalony a dokładniej na xampp'ie. Może to jest przyczyną. Już sam nie wiem dry.gif
kyku
Jeśli to nie problem.. zrob to za pomoca php

  1. <?php
  2. $strona = file_get_contents('http://www.strona.pl');
  3. preg_match('#<div id="Id_diva">(.*?)</div>#s', $strona, $wynik);
  4. echo $wynik;
  5. ?>
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.