Jak mogę kontrolować obraz tła i kolor elementu body w elemencie iframe
? Zauważ, że osadzony element body ma klasę, a iframe
jest strony, która jest częścią mojej witryny.
Potrzebuję tego, ponieważ moja witryna ma czarne tło przypisane do treści, a następnie białe tło przypisane do elementów div zawierających tekst. Edytor WYSIWYG używa znaku iframe
do osadzania treści podczas edycji, ale nie zawiera elementu div, więc tekst jest bardzo trudny do odczytania.
Treść iframe
when w edytorze ma klasę, która nie jest używana nigdzie indziej, więc zakładam, że została tam umieszczona, aby można było rozwiązać takie problemy. Jednak kiedy stosuję style class.body
, nie zastępują one stylów zastosowanych do ciała. Dziwne jest to, że style pojawiają się w Firebug, więc nie mam pojęcia, co się dzieje!
Dzięki
UPDATE - wypróbowałem rozwiązanie @ mikeq polegające na dodaniu stylu do klasy, która jest klasą ciała. To nie działa po dodaniu do arkusza stylów strony głównej, ale działa po dodaniu z Firebug. Zakładam, że dzieje się tak, ponieważ Firebug jest stosowany do wszystkich elementów na stronie, podczas gdy CSS nie jest stosowany w ramkach iframe. Czy to oznacza, że dodanie css po załadowaniu okna z JavaScriptem zadziała?
źródło
<div>
może czasami być obejściem (jeśli dany nagłówek CORS na to pozwala) ... (i „oczyszczanie” załadowanych danych za pomocą wyrażenia regularnego w Tak, wszystko hacky ...)Odpowiedzi:
Element iframe to „dziura” na stronie, w której jest wyświetlana inna strona internetowa. Zawartość elementu iframe nie ma żadnego kształtu ani nie stanowi części strony nadrzędnej.
Jak powiedzieli inni, dostępne opcje to:
źródło
Poniższe działa tylko wtedy, gdy zawartość iframe pochodzi z tej samej domeny nadrzędnej.
U mnie działa następujący skrypt jquery. Przetestowano w Chrome i IE8. Wewnętrzna ramka iframe odwołuje się do strony znajdującej się w tej samej domenie co strona nadrzędna.
W tym konkretnym przypadku ukrywam element z określoną klasą w wewnętrznym iframe.
Po prostu dodajesz element „style” do „głowy” wewnętrznej ramki iframe.
źródło
Nie możesz zmienić stylu strony wyświetlanej w elemencie iframe, chyba że masz bezpośredni dostęp, a zatem jesteś właścicielem źródłowych plików html i / lub css.
Ma to na celu zatrzymanie XSS (Cross Site Scripting)
źródło
An
iframe
ma inny zakres, więc nie możesz uzyskać do niego dostępu do stylu lub zmiany jego zawartości za pomocą javascript.Zasadniczo jest to „inna strona”.
Jedyne, co możesz zrobić, to edytować własny CSS, ponieważ z globalnym CSS nie możesz nic zrobić.
źródło
Zastąp kod CSS innej domeny
iframe
Korzystając z części odpowiedzi SimpleSam5 , osiągnąłem to dzięki kilku elementom iframe czatu Tawk (ich interfejs dostosowywania jest w porządku, ale potrzebowałem dalszych dostosowań).
W tym konkretnym elemencie iframe, który pojawia się na urządzeniach mobilnych, musiałem ukryć domyślną ikonę i umieścić jeden z moich obrazów tła. Zrobiłem co następuje:
Nie posiadam żadnej domeny Tawk i to zadziałało dla mnie, więc możesz to zrobić, nawet jeśli nie pochodzi z tej samej domeny nadrzędnej (pomimo komentarza Jeremy'ego Beckera na temat odpowiedzi Sama).
źródło
Ten kod wykorzystuje zwykły JavaScript. Tworzy nowy
<style>
element. Ustawia zawartość tekstową tego elementu jako ciąg znaków zawierający nowy CSS. I dołącza ten element bezpośrednio do nagłówka dokumentu iframe.źródło
Blocked a frame with origin xxxxxxxxx from accessing a cross-origin frame.
Obawiam się, że to nie zadziałaJeśli masz kontrolę nad stroną hostującą element iframe i stroną elementu iframe, możesz przekazać parametr zapytania do elementu iframe ...
Oto przykład dodawania klasy do elementu iframe na podstawie tego, czy witryna hostingowa jest mobilna ...
Dodawanie iFrame:
Wewnątrz elementu iFrame:
źródło
Prowadzę bloga i miałem wiele problemów ze znalezieniem sposobu zmiany rozmiaru osadzonej treści. Menedżer postów pozwala tylko na pisanie tekstu, umieszczanie obrazów i osadzanie kodu HTML. Układ bloga sam w sobie jest responsywny. Jest zbudowany za pomocą Wix. Jednak osadzony HTML nie jest. Dużo czytałem o tym, jak niemożliwa jest zmiana rozmiaru komponentów wewnątrz treści generowanych ramek iFrame. Oto moja sugestia:
Jeśli masz tylko jeden komponent w swoim elemencie iFrame, tj. Swoją treść, możesz zmienić rozmiar tylko sedna. Zapomnij o iFrame.
Miałem problemy z widocznym obszarem, specyficznymi układami dla różnych programów użytkownika i to rozwiązało mój problem:
Logika polega na ustawieniu gist (lub twojego komponentu) css na podstawie agenta użytkownika. Upewnij się, że najpierw zidentyfikowałeś swój komponent, zanim zastosujesz go do selektora zapytania. Zapraszam do obejrzenia, jak działa responsywność .
źródło
Być może teraz się to zmieniło, ale użyłem osobnego arkusza stylów z tym elementem:
aby z powodzeniem stylizować osadzone elementy iframe youtube ... zobacz posty na blogu na tej stronie .
źródło
nadaj treści swojej strony iframe identyfikator (lub klasę, jeśli chcesz)
następnie, również na stronie elementu iframe, przypisz mu tło w CSS
źródło