Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: script z <iframe>. Czy widzi elementy na zewnątrz?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
northman
Witam!
Wrzucilem do wordpressa do widgeta tekstowego <iframe'a> z javascriptem w środku. Próbuje w tym kodzie szukać elementów na zewnątrz tego <iframe> czyli ogólnie elementów wordpressowych np. comment lub post, tak aby móc go z tego poziomu obrobić- na tą chwilę dla testów to po prostu zmienić atrybut {border:}. Niestety nie udaje mi się wyszukać tych elementów, stąd pytanie czy <script> ma dostęp do wszystkich elementów DOM strony jeśli jest zaladowany poprzez <iframe>?
Dzięki z góry.
by_ikar
Cytat
Niestety nie udaje mi się wyszukać tych elementów, stąd pytanie czy <script> ma dostęp do wszystkich elementów DOM strony jeśli jest zaladowany poprzez <iframe>?


Ręki sobie uciąć nie dam, ale wydaje mi się że nie. Wyobraź sobie, że podpinasz jakąś stronkę w iframe, kompletną, która ma swoje style css, swoją grafikę, i całkiem różne kodowanie skrypty etc. Jeżeli to co jest wewnątrz miałoby wpływ na to co jest na zewnątrz, to ogólnie byłby jeden wielki burdel. Tak przynajmniej ja to rozumiem, jak jest w rzeczywistości nie jestem przekonany, ale średnio mi się wydaje aby możliwość grzebania wewnątrz iframe istniała.
mortus
Oczywiście, ale zdaje się, że tylko w obrębie jednej domeny. Przykład:
[HTML] index.html - pobierz, plaintext
  1. <!DOCTYPE html>
  2. <frameset rows="100,*" frameborder="yes" border="20px" framespacing="5" cols="*">
  3. <frame name="topFrame" scrolling="NO" noresize src="topFrame.htm">
  4. <frame name="mainFrame" src="innerFrame.htm">
  5. </html>
[HTML] index.html - pobierz, plaintext
[HTML] topFrame.htm - pobierz, plaintext
  1. <!DOCTYPE html>
  2. </head>
  3. <body style="background-color:white;">
  4. <div id="nav">
  5. <ul>
  6. <li><a href="#">Link 1</a></li>
  7. <li><a href="#">Link 2</a></li>
  8. <li><a href="#">Link 3</a></li>
  9. <li><a href="#">Link 4</a></li>
  10. <li><a href="#">Link 5</a></li>
  11. </ul>
  12. </div>
  13. </body>
  14. </html>
[HTML] topFrame.htm - pobierz, plaintext
[HTML] innerFrame.htm - pobierz, plaintext
  1. <!DOCTYPE html>
  2. function function1() {
  3. document.getElementById("nav_copy").innerHTML = window.parent.topFrame.document.getElementById("nav").innerHTML;
  4. alert("DONE");
  5. }
  6. </head>
  7. <body style="background-color:white;">
  8. <input type="button" value="Copy nav container" onclick="function1();">
  9. <div id="nav_copy">
  10. </div>
  11. </body>
  12. </html>
[HTML] innerFrame.htm - pobierz, plaintext

Zatem można się dostać z ramki wewnętrznej do elementów ramki zewnętrznej. Można i na odwrót.
northman
Dzięki!
@by_ikar wlaśnie z tego powodu zadalem to pytanie, bo mialem takie samo przeczucie.
Jako, że <iframe jest w obrębie tej samej domeny (nie próbowalem zdalnie) tak więc udalo mi się dojść do moich elementów.
@mortus: wielkie dzięki za przykladowy kod. W szczególności: window.parent.topFrame.document.getElementById("nav").innerHTML;
pozwolil mi odszukać zadane elementy! ( nie szukalem wcześniej z 'window.parent').
Pozdrawiam i dzięki raz jeszcze za informacje:)
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.