Comment puis-je contrôler l'image d'arrière-plan et la couleur d'un élément de corps dans un iframe
? Notez que l'élément body incorporé a une classe et le iframe
est d'une page qui fait partie de mon site.
La raison pour laquelle j'en ai besoin est que mon site a un arrière-plan noir attribué au corps, puis un arrière-plan blanc attribué aux divs contenant du texte. Un éditeur WYSIWYG utilise un iframe
pour incorporer le contenu lors de l'édition, mais il n'inclut pas le div, donc le texte est très difficile à lire.
Le corps du iframe
when dans l'éditeur a une classe qui n'est utilisée nulle part ailleurs, donc je suppose que cela a été mis là pour que des problèmes comme celui-ci puissent être résolus. Cependant, lorsque j'applique des styles, class.body
ils ne remplacent pas les styles appliqués au corps. Ce qui est étrange, c'est que les styles apparaissent dans Firebug, donc je n'ai aucune idée de ce qui se passe!
Merci
MISE À JOUR - J'ai essayé la solution de @ mikeq d'ajouter un style à la classe qui est la classe du corps. Cela ne fonctionne pas lorsqu'il est ajouté à la feuille de style de la page principale, mais cela fonctionne lorsqu'il est ajouté avec Firebug. Je suppose que c'est parce que Firebug est appliqué à tous les éléments de la page alors que le CSS n'est pas appliqué dans les iframes. Cela signifie-t-il que l'ajout du css après le chargement de la fenêtre avec JavaScript fonctionnerait?
la source
<div>
peut parfois être une solution de contournement (si CORS-Header le permet) ... (et «nettoyer» les données chargées par une expression rationnelle sur le Oui, tous hacky ...)Réponses:
Un iframe est un «trou» dans votre page qui affiche une autre page Web à l'intérieur. Le contenu de l'iframe n'est sous aucune forme ni ne fait partie de votre page parent.
Comme d'autres l'ont indiqué, vos options sont:
la source
Ce qui suit ne fonctionne que si le contenu iframe provient du même domaine parent.
Le script jquery suivant fonctionne pour moi. Testé sur Chrome et IE8. L'iframe interne fait référence à une page qui se trouve sur le même domaine que la page parent.
Dans ce cas particulier, je cache un élément avec une classe spécifique dans l'iframe interne.
Fondamentalement, vous ajoutez simplement un élément 'style' à la 'tête' de l'iframe interne.
la source
Vous ne pouvez pas changer le style d'une page affichée dans une iframe à moins d'avoir un accès direct et donc la propriété des fichiers source html et / ou css.
C'est pour arrêter XSS (Cross Site Scripting)
la source
An
iframe
a une autre portée, vous ne pouvez donc pas y accéder pour le style ou pour modifier son contenu avec javascript.C'est essentiellement "une autre page".
La seule chose que vous pouvez faire est d'éditer son propre CSS, car avec votre CSS global, vous ne pouvez rien faire.
la source
Remplacer un autre domaine
iframe
CSSEn utilisant une partie de la réponse de SimpleSam5 , j'ai réalisé cela avec quelques iframes de chat de Tawk (leur interface de personnalisation est correcte mais j'avais besoin de personnalisations supplémentaires).
Dans cette iframe particulière qui apparaît sur les appareils mobiles, j'avais besoin de masquer l'icône par défaut et de placer l'une de mes images d'arrière-plan. J'ai fait ce qui suit:
Je ne possède aucun domaine Tawk et cela a fonctionné pour moi, vous pouvez donc le faire même si ce n'est pas du même domaine parent (malgré le commentaire de Jeremy Becker sur la réponse de Sam).
la source
Ce code utilise du JavaScript vanille. Cela crée un nouvel
<style>
élément. Il définit le contenu textuel de cet élément comme une chaîne contenant le nouveau CSS. Et il ajoute cet élément directement à l'en-tête du document iframe.la source
Blocked a frame with origin xxxxxxxxx from accessing a cross-origin frame.
J'ai peur que cela ne fonctionnera pasSi vous avez le contrôle de la page hébergeant l'iframe et de la page de l'iframe, vous pouvez passer un paramètre de requête à l'iframe ...
Voici un exemple pour ajouter une classe à l'iframe selon que le site d'hébergement est mobile ou non ...
Ajout d'iFrame:
À l'intérieur d'iFrame:
la source
J'ai un blog et j'ai eu beaucoup de mal à trouver comment redimensionner mon contenu intégré. Le gestionnaire de publication vous permet uniquement d'écrire du texte, de placer des images et d'intégrer du code HTML. La mise en page du blog est elle-même réactive. Il est construit avec Wix. Cependant, le HTML intégré ne l'est pas. J'ai beaucoup lu sur l'impossibilité de redimensionner les composants à l'intérieur du corps des iFrames générés. Alors, voici ma suggestion:
Si vous n'avez qu'un seul composant dans votre iFrame, c'est-à-dire votre essence, vous ne pouvez redimensionner que l'essentiel. Oubliez l'iFrame.
J'ai eu des problèmes avec la fenêtre d'affichage, des mises en page spécifiques à différents agents utilisateurs et c'est ce qui a résolu mon problème:
La logique est de définir gist (ou votre composant) css en fonction de l'agent utilisateur. Assurez-vous d'abord d'identifier votre composant avant de l'appliquer au sélecteur de requête. N'hésitez pas à jeter un coup d'œil sur le fonctionnement de la réactivité .
la source
Peut-être que cela a changé maintenant, mais j'ai utilisé une feuille de style séparée avec cet élément:
pour styliser avec succès les iframes youtube intégrées ... consultez les articles de blog sur cette page .
la source
donnez au corps de votre page iframe un identifiant (ou une classe si vous le souhaitez)
puis, également dans la page de l'iframe, attribuez un arrière-plan à celui en CSS
la source