CSS auf iframe anwenden?
Hi Leute,
ja ich weiß, dass es dazu schon viele Themen im Internet gibt, ich kann mit denen aber leider nichts wirklich anfangen, bzw. hat noch nichts funktioniert. Ich habe ein iFrame eingebunden (von der gleichen Domain) und möchte, dass bei dem iframe eine Sache anders aussieht, wie auf der Hauptseite. Wie kann man so einfach wie möglich einen CSS Befehl auf den Inhalt des iframes anwenden? Ich wäre für jede Hilfe wirklich sehr dankbar :)
Im Internet habe ich z.B. diesen Java Code gefunden, mit dem ich aber leider noch nicht weiter gekommen bin. Ducrh wass müsste ich hier z.B. "iframe" ersetzen?
$("iframe").contents().find("element-selector").css("border-color", "blue");
4 Antworten
Das ist kein Java Code sondern JavaScript. Er macht eigentlich genau das was Du erreichen willst. Von der Seite aus die das iframe einbindet in dem iframe eine Style-Ausgabe ändern. Ist allerdings etwas mühsam wenn Du doch auf die Seite im iframe auch Einfluss hast. Daraus ergeben sich für mich 2 Fragen:
- Wieso passt Du den Style nicht einfach direkt in der eingebundenen Datei an?
- Wieso verwendest Du überhaupt ein iframe, wenn es die Inhalte von der gleichen Webseite lädt?
Aber es scheint ohne Lazy Load abgesehen davon leider auch nicht zu funktionieren... Echt merkwürdig
Und wäre das so wie darüber beschrieben in Ordnung, wenn der Code darunter wäre?
Also den Scriptcode einfach unter den iframe Code setzen? Sorry du merkst, dass ich mich damit nicht so auskenne...😅
Wenn es per LazyLoad eingebunden wird, darfst Du es natürlich erst nach Ausführung des LazyLoad einbinden.
Mal ne blöde Frage: Wie kann ich denn sichergehen, dass JQuery bei mir eingebunden ist? Meines Wissens nach ist es eingebunden durch Plugins etc. (Ich benutze Wordpress) die das auch benutzen soweit ich weiß..
Den Code habe ich wie folgt geändert:
$("iframe").contents().find("#Anker-PowerCore-10000mAh").css("display", "none");
Die CSS ID (#Anker-PowerCore-10000mAh) ist bei dem entsprechendem Element bei der Referenzseite eingetragen. Dennoch wird das Element aber nicht ausgeblendet bei dem iframe. Auch andere CSS Regeln greifen nicht..
Wordpress verwendet jQuery, es sei denn du hast ein Plugin, welches die Einbindung unterdrückt.
Wenn das JavaScript scheinbar nicht funktioniert, dann prüfe die Konsole im Entwicklerfenster, ob dort JavaScript-Fehler gelistet sind. Wenn ja, gehe diesen nach.
Hallo threadi,
danke für deine Antwort. Ja das Problem ist, dass ich die Hauptseite als "Referenzseite" habe und bei verschiedenen Unterseiten das iframe eingebunden habe, welches minimal anders aussehen soll als die "Referenzseite". Deshalb kann ich dort nicht die CSS Regel direkt machen.
Um nochmal auf das Script zurückzukommen:
Mit was müsste ich denn "iframe" ersetzen? Oder kann man das einfach so lassen?
Das kannst Du so lassen, musst nur halt die dort stehenden CSS-Eigenschaften an deine Anforderungen anpassen. Du musst in deiner Seite allerdings auch jQuery eingebunden haben, denn es ist ein jQuery-Script.
Also so wie ich das verstehe willst du seitenelemente wiederverwenden, da wäre das der Komplett falsche ansatz.
Das ganze nennt sich in der Webentwicklung u.a. "Templating":
https://en.wikipedia.org/wiki/Web_template_system
Für dieses Konzept gibt es zahlreiche implementierungen:
https://developer.mozilla.org/de/docs/Web/HTML/Element/template
https://colorlib.com/wp/top-templating-engines-for-javascript/
Edit: Wie ich sehe verwendest du Wordpress, da gibt es schon ein Templating system.
https://developer.wordpress.org/themes/template-files-section/page-template-files/
LG
@FinnB132Hallo Finn,
ja du hast vom Prinzip recht. Ich hatte das damals so gemacht, weil ich keine einfache Möglichkeit gefunden habe, die Templates mit Ajax nachladen zu können und es bei iframes recht einfach ist per Plugin. Ich benutze den Elementor Page Builder für Wordpress (falls du den kennst). Ich kenne mich leider nicht mit Coden aus. Wüsstest du denn eine einfache Möglichkeit (z.B. per Plugin), wie man gwisse Elementor Templates mit Ajax nachladen könnte?
Du könntest eine klasse zuweisen (nicht auf den iframe sondern inhalt der anderen seite) aber die deklarationen nur auf der seite vornehmen via <style></style> wo der iframe eingefügt wird. Hab ich aber noch nie probiert kann also auch nicht sagen ob das klappt
Aber dann würde das meine Wissens nach leider nicht für den iframe greifen. 🤔
Gehe auch eher nicht davon aus. Aber weis es nicht deshalb der vorschlag
Dann musst Du schon die Ursprungsseite im gewünschten Styl formatieren.
Hmm so ganz verstehe ich leider nicht wie du es meinst. Da kenn ich mich leider auch nicht gut genug für aus 😅
Dann lies per php nur den Quellcode der Startseite ein und schneide ihn auf die Bedürfnisse zurecht.
Aber über JavaScript müsste das doch eigentlich funktionieren? 🤔
Ist es nur Text oder Text und Bilder von der Startseite?
Hmm. Das iframe wird mittels Lazy Load erst geladen, wenn man die Stelle erreicht hat. Könnte es vielleicht auch damit zusammenhängen? Bzw. habe ich das Java Script wie hier gezeigt auf der Seite eingebunden: https://www.publishingblog.ch/javascript-in-elementor-einbinden/
-> <script>$("iframe").contents().find("#Anker-PowerCore-10000mAh").css("display", "none");</script>
Das ist über dem iframe platziert. Wäre das denn so überhaupt richtig ?😅