Override-Körper-Stil für den Inhalt in ein iframe
Wie kann ich das hintergrund-Bild und Farbe für das body-element innerhalb einer iframe
? Beachten Sie, dass die eingebettete body-element hat eine Klasse, und die iframe
ist eine Seite, die Bestandteil meiner Website.
Dem Grund brauche ich das ist, dass meine Seite hat einen schwarzen hintergrund zugewiesen, um den Körper, und dann einen weißen hintergrund zugewiesen divs, die text enthalten. Ein WYSIWYG-editor verwendet eine iframe
einbetten von Inhalten bei der Bearbeitung, aber es hat nicht die div, so dass der text sehr schwer zu Lesen.
Den Körper des iframe
wenn im editor eine Klasse, die nicht verwendet wird, anderswo, also ich ' m vorausgesetzt, dies war es so Probleme wie dieses gelöst werden könnte. Allerdings, wenn ich die Stilarten class.body
Sie nicht überschreiben die Stile angewendet Körper. Die seltsame Sache ist, dass die Stile erscheinen im Firebug, also ich habe keine Ahnung, was Los ist!!!
Dank
UPDATE - ich habe versucht @mikeq Lösung zum hinzufügen einer Formatvorlage für die Klasse, der Körper ist Klasse. Dies funktioniert nicht, wenn es in der main Seite das stylesheet, aber es funktioniert auch wenn Hinzugefügt mit Firebug. Ich gehe davon aus dies ist weil Firebug wird angewendet, um alle Elemente auf der Seite in der Erwägung, dass die CSS wird nicht angewendet, innerhalb von iframes. Bedeutet das, dass das hinzufügen der css nach der laden-Fenster mit JavaScript funktionieren würde?
- Mögliche Duplikate von How to apply CSS iframe?
- Es ist zwar nicht möglich, etwas zu berühren in ein iframe laden, die URL per Ajax in ein
<div>
kann manchmal ein workaround (falls gegeben CORS-Header zulassen, dass)... (und „Hygienisierung“ der geladenen Daten durch regexp auf den Weg. Ja, alle hacky...) - Sie können javascript verwenden, wenn Sie die Seite Domänen übereinstimmen, aber warum nicht einfach einen style-block in Ihre innere Seite ist HTML überschreiben Sie die gewünschten Farben geändert? Fügen Sie einfach mehr Selektoren in Ihrer überschreiben oder verwenden wichtig! wenn alle Stricke reißen, zu überschreiben, Farbe Stile, die Sie wollen nur auf dieser einen Seite...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einem iframe ist ein "Loch" in der Seite zeigt, dass eine andere web-Seite innerhalb der it. Der Inhalt des iFrames ist nicht in irgendeiner form Teil Ihrer übergeordneten Seite.
Wie andere bereits gesagt haben, sind Ihre Optionen:
Der unten funktioniert nur, wenn der iframe-Inhalt wird aus dem gleichen übergeordneten Domäne.
Folgendes jquery-Skript funktioniert für mich. Getestet auf Chrome und IE8. Das innere iframe verweist auf eine Seite, die auf der gleichen Domäne wie die übergeordnete Seite.
In diesem speziellen Fall, ich bin versteckt ein element mit einer bestimmten Klasse in das innere iframe.
Im Grunde, Sie fügen Sie einfach ein 'style' - element, um den 'Kopf' des inneren iframe.
<iframe type="application/pdf" src="mydomain/resources/file.pdf"></iframe>
Können Sie nicht ändern Sie den Stil einer Seite in einem iframe angezeigt, es sei denn, Sie haben direkten Zugang und daher Eigentum des Quell-html und/oder css-Dateien.
Ist dies zu verhindern, XSS (Cross Site Scripting)
Einer
iframe
hat einen weiteren Spielraum, so dass Sie nicht auf Stil oder ändern Sie Ihre Inhalte mit javascript.Es ist im Grunde "anderen Seite".
Die einzige Sache, die Sie tun können, ist zu Bearbeiten Sie Ihre eigenen CSS, denn mit Ihrer globalen CSS-Sie können nicht alles tun.
Überschreiben anderen Domäne
iframe
CSSIndem er einen Teil der SimpleSam5 Antwort, ich erreichte dies mit ein paar von Tawk chat iframes (Ihre Anpassung Schnittstelle ist gut, aber ich brauchte weitere Anpassungen).
In diesem speziellen iframe, zeigt sich auf mobile Geräte, die ich brauchte, um zu verbergen das Standard-icon und Stelle eines meiner Hintergrundbilder. Ich habe die folgenden:
Ich nicht eigenen Tawk die domain und dieser arbeitete für mich, so können Sie dies auch tun, wenn es nicht aus dem gleichen übergeordneten Domäne (trotz Jeremy Beckers Kommentar auf Sam ' s Antwort).
Dieser code verwendet Vanille JavaScript. Es schafft eine neue
<style>
element. Es wird der text-Inhalt des Elements als string mit der neuen CSS. Und hängt das element direkt an das iframe-Dokument auf den Kopf.Blocked a frame with origin xxxxxxxxx from accessing a cross-origin frame.
Ich fürchte, es wird nicht funktionierenWenn Sie die Kontrolle über die Seite mit dem iframe und die Seite des iFrames können Sie ein query-parameter an den iframe...
Hier ein Beispiel zum hinzufügen einer Klasse zum iframe basierend auf, ob oder nicht der hosting-Website ist Mobil...
Hinzufügen iFrame:
Inside iFrame:
Ich habe eine blog und ich sehr viel Mühe hatte, herauszufinden, wie man die Größe von meinem eingebetteten Kern. Post-manager ermöglicht es Ihnen, text zu schreiben, platzieren von Bildern und einbetten von HTML-code. Blog-layout ist responsive selbst. Es ist gebaut mit Wix. Allerdings eingebetteten HTML-Code nicht. Ich lese viel darüber, wie es unmöglich ist, um die Größe von Komponenten innerhalb des Körpers der generierten iFrames. So, hier ist mein Vorschlag:
Wenn Sie nur eine Komponente in Ihrem iFrame, d.h. Ihren Kern, Sie können die Größe nur den Kern. Vergessen Sie den iFrame.
Hatte ich Probleme mit der viewport-spezifische layouts an verschiedene user-agents, und das ist, was mein problem gelöst:
Die Logik ist, um wesentliche (oder Ihre Komponenten) css-basierend auf user-agent. Stellen Sie sicher, identifizieren Sie Ihre Komponente zunächst, bevor die query-Selektor. Fühlen Sie sich frei, um einen Blick zu nehmen, wie Reaktionsfähigkeit arbeiten.
Vielleicht ist es jetzt geändert, aber benutzt habe ich ein separates stylesheet mit diesem element:
erfolgreich Stil eingebetteten youtube-iframes...siehe die blog-Beiträge auf dieser Seite.
geben dem Körper Ihres iframe-Seite eine ID (oder Klasse, wenn Sie es wünschen).
dann auch in der iframe-Seite, weisen Sie einen hintergrund in CSS