Czy można czytać/edytować zawartość iframe (nie tylko właściwości takie jak src) za pomocą skryptów znajdujących się na stronie, ale poza tą ramką? Wiem, że to niemożliwe, jeśli źródło pochodzi z innej strony, ponieważ byłaby to duża dziura serurity, ale pytam tylko, czy działa dla innej treści z tego samego źródła.JavaScript i to samo źródło iframes
Odpowiedz
jeśli iframe zawartość jest z tej samej domeny można uzyskać do niego dostęp za pomocą frames.myiframe.getElement...
Przeglądarka ogranicza dostęp do zawartości iframe/macierzystych do treści, które nie jest z tej samej domeny tylko. W przypadku żądań z tej samej domeny można uzyskać dostęp do treści za pośrednictwem window.parent
lub przez myiframe.document.getElementById
Tak, możesz to zrobić, jeśli lokalizacja elementu iframe i strony nadrzędnej jest tego samego hosta (ta sama polityka początkowa).
Aby zapewnić przeglądarkę pozwoli Ci to zrobić, można użyć
document.domain = "example.com"
na stronie nadrzędnej oraz w iframe. (Zauważ, że subdomain.example.com i example.com są różne)
metoda Dom dla robi to (strony nadrzędnej do iframe):
document.getElementById("myiframe").contentWindow.document.getElementById("divinframe").innerHTML = "I'm on the inside.";
document.getElementById("myiframe").contentWindow.someFunctionInsideIframe();
contentWindow jest odpowiedzią i działa w większości, jeśli nie we wszystkich nowoczesnych przeglądarkach, z pewnością na chrome, ie7 + itd.
Aby przejść w drugą stronę (iframe do strony nadrzędnej):
top.document.getElementById("DivInTopParent")
Aby dodać do tego, co już zostało powiedziane na temat interakcji z iframes załadowane z tej samej kategorii:
przeglądarka pozwoli na interakcję z iframe (lub ramki), o ile strony, która stara aby wykonać interakcję, a strona, którą wczytałeś, ma ten sam dokument.domain.
Możesz ustawić document.domain na przyrostek hosta, z którego zostałeś załadowany. na przykład jeśli masz stronę załadowany z blog.fred.com i chce współdziałać z jakiegoś serwisu o nazwie jsonservice.fred.com, obie strony będą musiały zrobić
document.domain = 'fred.com';
przed javascript z nich będzie w stanie współdziałać z inny.
Przeglądarki są na tyle mądry, aby nie pozwalają ustawić document.domain do „.com”, w przypadku, gdy zastanawiali ...
To nie jest dokładnie po stronie klienta JavaScript/roztwór, ale pomógł mi rozwiązać problem.
Musisz usunąć nagłówek X-Frame-Options
, jeżeli występuje, a zamiast tego wysłać następujące jeden dla strony iframe:
Content-Security-Policy: frame-ancestors 'self' example.com *.example.com
i dodatkowy jeden dla IE:
X-Content-Security-Policy: frame-ancestors 'self' example.com *.example.com
- 1. Piaskownica iframe z flagą "zezwalaj na to samo źródło"
- 2. jQuery $ (function() {}) i $ (document) .ready to samo?
- 3. Wiadomości Autobusy i MOM - to samo?
- 4. Czy sesja i ciasteczka to samo?
- 5. Czy MPI sendbuf i recvbuf to to samo?
- 6. Samo modyfikujący plik html-JavaScript
- 7. Wyłączanie DFP/DoubleClick iFrames
- 8. AutoMapper - mapowanie dziedziczenia nie działa, to samo źródło, wiele miejsc docelowych
- 9. problemy z drukowaniem iFrames
- 10. W JavaScript dlaczego obiekty Date mają obie metody valueOf i getTime, jeśli robią to samo?
- 11. Formant systemu Windows Forms WebBrowser i iframes
- 12. Czy Tuple2 i Pair to samo, czy nie?
- 13. Czy "SFTP" i "Ftp over SSL" to samo?
- 14. Czy strona kodowa 65001 i utf-8 to samo?
- 15. czas mysql i czas php nie to samo
- 16. Czy restful API i usługa backendu (np. Parse) to samo?
- 17. To samo wyjście dla htonl() i ntohl() na liczbach całkowitych
- 18. Android: Dlaczego getDimension i getDimensionPixelSize oba zwracają to samo?
- 19. Xcode 5 przedstawia to samo urządzenie dwukrotnie
- 20. JEŻELI Wyrażenie wiele warunków, to samo oświadczenie
- 21. UUID to samo z różnych ciągów
- 22. Błąd przełącznika svn - to nie jest to samo repozytorium.
- 23. Iframes nie działa
- 24. Adnotacje typu przepływu i poprawne źródło kodu JavaScript
- 25. iFrames and Law
- 26. Matching to samo słowo dwukrotnie wyrażenie regularne, nie dbając o to, co to słowo jest
- 27. JavaScript jak znaleźć źródło zdarzenia przewijania
- 28. Javascript: Uzyskaj aktualną stronę CURRENT źródło
- 29. Selenium WebDriver: Jak czekać na załadowanie iFrames?
- 30. iPhone powraca to samo zdarzenie keydown dla (hash i 3) i (Asterisk i 8)
Myślę ten link mówi to wszystko [Skrypty iframe - samouczek i przykłady] (http://www.dyn-web.com/tutorials/iframes/) – mplungjan