Pb avec <iframe height="100%"> sou

Fermé
TheNox Messages postés 59 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 17 juin 2005 - 16 avril 2005 à 13:00
Masterjoa Messages postés 92 Date d'inscription jeudi 30 décembre 2010 Statut Membre Dernière intervention 21 octobre 2012 - 8 sept. 2011 à 19:50
Salut à tous

J'aimerais savoir pourquoi le script

<iframe height="100%" src="..."> blabla </iframe> ne fonctionne pas sous firefox
Il ignore "height" à 100%. Pareil pour "width".


Sous IE, ca marche bien

Comment faire pour avoir compatibilité avec ie et firefox ?

Merci !

<TheNox> :-)

6 réponses

Hi

Déjà c'est pas un script! et de plus sur IE sa ne marche pas, malheureusement les iframes ne sont pas extensible a moin de faire un javascript mais j'y arrive pas :S
si quelqu'un saurai comment faire?? (pas de php)

Merci
0
berzek Messages postés 2 Date d'inscription jeudi 14 août 2008 Statut Membre Dernière intervention 18 août 2008 8
Modifié le 4 avril 2017 à 14:41
Voici les solutions que je te propose suivant le navigateur et le domaine (sécurité) dans lequel s'execute ton code..


En espérant que tu trouves ton bonheur ou que ca te mette sur la bonne voie ..

@+


---------------------------------------
    • solution 1 (uniquement sous ie et pas firefox)


tu indiques des height et width en dure, ex : <iframe height=800 (au lieu de height=100%)
- marche pas sous firefox malheureusement

---------------------------------------
    • solution 2 (uniquement sous ie)


Si tu ne connais encore la taille que le contenu de ta frame prendra, tu peux aussi le définir en dure a partir de ta frame plutot qu'a partir du parent...


code du PARENT (dans le body) :

<iframe src="/sponsors/sponsorsx.htm" id="sponsorFrame" mame="sponsorFrame" scrolling="auto" frameborder="0"></iframe>



code dans la page appellée par la FRAME (avant le <body> de la page appellée dans l'iframe) :


<script type="text/javascript">
maframe = parent.document.getElementById('sponsorFrame');// frame in the parent
function ExecuteOnload()
{
alert("Apres ce message, l'Iframe va s'agrandir..");
maframe.style.height = "800";
maframe.style.width = "800";
}
</script>
<body onload="ExecuteOnload();">

---------------------------------------
    • solution 3 (marche sous ie ET FIREFOX !) :


code du PARENT (dans le body) :

<iframe src="/sponsors/sponsorsx.htm" id="sponsorFrame" mame="sponsorFrame" width="100%" scrolling="auto" frameborder="0"></iframe>

code dans la page appellée par la FRAME (avant le <body> de la page appellée dans l'iframe) :

<script type="text/javascript">
maframe = parent.document.getElementById('sponsorFrame');// frame in the parent

function resizeIframe() {
var height = parent.document.documentElement.clientHeight;//document.documentElement.clientHeight;
height -= maframe.offsetTop;
height -= 20; /* whatever you set your body bottom margin/padding to be */
maframe.style.height = height +"px";
};

maframe.onload = resizeIframe;
window.onresize = resizeIframe;
</script>


REM ! Attention cpdt, il faut également que parent et frame cible soit soit sous le meme domaine sinon il peut y avoir un "access denied" qui s'opere lors d'un crossdomaine et empeche alors l'execution normal du code
(https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/?redirectedfrom=MSDN

---------------------------------------
    • solution 4 (marche sous ie ET FIREFOX !) :


Code à inclure directement dans la page parent dans le body

<body onload="resizeIframe();">
<script type="text/javascript">
function resizeIframe()
{
maframe = document.getElementById('sponsorFrame');// frame in the parent
maframe.style.height = maframe.contentWindow.document.body.scrollHeight+"px"; //changement de la hauteur
maframe.style.width = maframe.contentWindow.document.body.scrollWidth+"px"; //changement de la largeur
}
</script>
<iframe src="/sponsors/sponsorsx.htm" id="sponsorFrame" name="sponsorFrame" WIDTH="100%" HEIGHT="100%" frameborder="0" scrolling="no"></iframe>

REM ! Attention cpdt, il faut également que parent et frame cible soit soit sous le meme domaine sinon il peut y avoir un "access denied" qui s'opere lors d'un crossdomaine et empeche alors l'execution normal du code
(https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/?redirectedfrom=MSDN


REM . une maniere de contourner le pb de sécurité précédent et avoir un code qui fonctionne a la fois dans ie et firefox serait de réécrire en dure la fonction précédente comme ceci :

function resizeIframe()
{
maframe = document.getElementById('sponsorFrame');// frame in the parent
maframe.style.height = "800";//maframe.contentWindow.document.body.scrollHeight+"px"; //changement de la hauteur
maframe.style.width = "100%";//maframe.contentWindow.document.body.scrollWidth+"px"; //changement de la largeur
}
0
lothi Messages postés 4 Date d'inscription dimanche 9 décembre 2007 Statut Membre Dernière intervention 11 décembre 2008
11 déc. 2008 à 10:15
Vraiment super merci merci beaucoup berzek :)
0
Rappel du code JS de berzek :

function resizeIframe()
{
maframe = document.getElementById('sponsorFrame');// frame in the parent
maframe.style.height = "800";//maframe.contentWindow.document.body.scrollHeight+"px";
//changement de la hauteur
maframe.style.width = "100%";//maframe.contentWindow.document.body.scrollWidth+"px";
//changement de la largeur
}

On peut faire exactement pareil sans connaître une once de JS ! Ici, tu manipules le style, donc on peut tout aussi bien assigner l'extension .css à notre fichier JS et, sans oublier d'ajouter ça au header de la page HTML :

<link rel="stylesheet" type="text/css" media="screen" title="Style iframe" href="style.css" />

on peut remplir le fichier style.css avec ça :

#sponsorFrame
{
width: 100%;
height: 100%;
}

Voilà voilà ! En espérant que ça marche (eh oui, je ne l'ai pas testé...), mais normalement aucun problème, sinon celui d'une potentielle sécurité sur Firefox qui empêcherait le height: 100%; pendant le chargement seulement...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour, j'ai insserer une iframe sur ma page de mon site mai le soucies ces que ya deux barres pour descendre en bas de page une sur l'iframe ajouter et l'autre celle de ma page de mon site je ne ces pas comment faire pour retirer celle de l'iframe si quelqu'un pouvait m'aider sa serait cool merci.

Mon iframe :

<iframe src="https://i-services.com/membres/annonces/annonces.php?uid=164781&sid=112119" width="700" height="800" frameborder="0" scrolling="auto"><a href="https://i-services.com/membres/annonces/annonces.php?uid=164781&sid=112119">Petites Annonces</a></iframe>

Déposez gratuitement vos annonces WWW.AUTOPASSION08.FR
Adresse mail : autopassion08@hotmail.fr

Pour ceux qui peuve m'aider ajouter moi sur msn merci.
0
Masterjoa Messages postés 92 Date d'inscription jeudi 30 décembre 2010 Statut Membre Dernière intervention 21 octobre 2012 3
8 sept. 2011 à 19:50
Pour ceux qui passent ici,
Il suffit de mettre un height:100%; à l'iframe et définir une hauteur aux éléments parents (ne pas oublier la balise html).
Et le tout sans js!!!
0