Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> script z <iframe>. Czy widzi elementy na zewnątrz?
northman
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 2
Dołączył: 13.03.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
mortus
post
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


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.

Ten post edytował mortus 2.11.2011, 13:15:24
Go to the top of the page
+Quote Post
northman
post
Post #4





Grupa: Zarejestrowani
Postów: 22
Pomógł: 2
Dołączył: 13.03.2005

Ostrzeżenie: (0%)
-----


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:)

Ten post edytował northman 2.11.2011, 14:15:39
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 19:05