IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Iframe qui ne s'adapte pas toujours


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 3
    Par défaut Iframe qui ne s'adapte pas toujours
    Bonjour à vous tous,

    Je suis actuellement en train de faire un site et la page index.html contient une iframe qui s'adapte en fonction de la page qui est chargée à l'interieur:

    voici le code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script type="text/javascript"> 
    function setHeight(){
    	var hauteur; 
    	var monFrm = document.getElementById('monIframe'); 
    	if(document.all){
    		hauteur = monFrm.contentWindow.document.body.scrollHeight;
    		}else{
    			hauteur = monFrm.contentWindow.document.body.offsetHeight + 20;
    		} monFrm.setAttribute("height", hauteur); 	
    	}
        </script> 
        <iframe id="monIframe" name="Principal" onload="setHeight()" src="intro.html" width="918px" scrolling="YES" style="background-color:#15116b"  frameborder="0" ></iframe>
    Tous fonctionne correctement quand la page chargée est une page html comme celle qui est chargé quand on accède à la page index du site mais lorsque c'est une autre page style blog (worldpress) ou formulaire (style jotform) la page ne s'adapte plus, au contraire, elle rétrécit jusqu'à son minimum, comme ci l'iframe était vide ou elle reste à la taille de la page qui avait été chargé avant!

    Y aurait-il une autre solution pour que l'iframe s'adapte parfaitement quelques soit la page qui est chargé à l'intérieur?

    Un petit coup de main serai le bienvenu !!

    Merci à tous
    Outrun

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    le document.all restreint l'utilisation du strict à IE, voir Opera.
    ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monFrm.contentWindow.document.body.scrollHeight;
    pourquoi pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monFrm.contentWindow.document.documentElement.scrollHeight;

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 3
    Par défaut
    Salut NoSmoking et merci pour ta réponse

    j'ai modifier la ligne de code par ce que tu me proposes mais cela ne change rien malheureusement.

    je ne comprend pas ce que tu veux dire par "le document.all restreint l'utilisation du strict à IE, voir Opera"

    Outrun

  4. #4
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par outrun Voir le message
    Salut NoSmoking et merci pour ta réponse

    j'ai modifier la ligne de code par ce que tu me proposes mais cela ne change rien malheureusement.

    je ne comprend pas ce que tu veux dire par "le document.all restreint l'utilisation du strict à IE, voir Opera"

    Outrun
    Normal, pour des raison de sécurité, tu n'as pas accès au contenu de frames de domaines différents du tien. Et donc pas accès non plus à la taille du contenu.

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Citation Envoyé par outrun Voir le message
    je ne comprend pas ce que tu veux dire par "le document.all restreint l'utilisation du strict à IE, voir Opera"
    moi non plus d'ailleurs
    pour être exact je me suis laisser abuser par une indentation très approximative.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function setHeight(){
      var hauteur; 
      var monFrm = document.getElementById('monIframe'); 
      if(document.all){
        hauteur = monFrm.contentWindow.document.body.scrollHeight;
      }else{
        hauteur = monFrm.contentWindow.document.body.offsetHeight + 20;
      }
      monFrm.setAttribute("height", hauteur); 	
    }
    là c'est more mieux lisible.

    Comme le dit Willpower dont je salut le retour, si les pages à insérer dans l'IFRAME n'appartiennent pas au même domaine que la page contenant, tu n'auras pas accès aux propriétés des pages insérées.

    tu peux essayer ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function setHeight(){
      var hauteur; 
      var monFrm = document.getElementById('monIframe'); 
      try(){
        if(document.all){
          hauteur = monFrm.contentWindow.document.body.scrollHeight;
        }else{
          hauteur = monFrm.contentWindow.document.body.offsetHeight + 20;
        }
        monFrm.setAttribute("height", hauteur); 	
      }catch(e){
        alert( e.message);
      }
    }

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function setHeight(){
      var hauteur; 
      var monFrm = document.getElementById('monIframe'); 
      try(){
        if(document.all){
          hauteur = monFrm.contentWindow.document.body.scrollHeight;
        }else{
          hauteur = monFrm.contentWindow.document.body.offsetHeight + 20;
        }
        monFrm.setAttribute("height", hauteur); 	
      }catch(e){
        alert( e.message);
      }
    }
    [/QUOTE]

    Salut NoSmoking

    Merci pour ton aide mais ton code affiche l'iframe figer sur environ 5 centimètres de haut quelques soit la page qui est à l'interieur et dreamweaver me donne une erreur de syntaxe sur : try(){

  7. #7
    Membre chevronné Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Par défaut
    Bonjour,
    Il y a bien une erreur de syntaxe, une petite recherche t'aurais aidé à trouver que ne prends aucun paramètre. Ce n'est pas une fonction, mais une instruction du langage...
    Bref, enlève les parenthèses.

    http://www.w3schools.com/js/js_try_catch.asp

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    tant pour moi !!!
    bien vue nadox, donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function setHeight(){
      var hauteur; 
      var monFrm = document.getElementById('monIframe'); 
      try {  // sans parentheses
        if(document.all){
          hauteur = monFrm.contentWindow.document.body.scrollHeight;
        }else{
          hauteur = monFrm.contentWindow.document.body.offsetHeight + 20;
        }
        monFrm.setAttribute("height", hauteur); 	
      }catch(e){
        alert( e.message);
      }
    }

Discussions similaires

  1. lien dans un iframe qui ne s'ouvre pas sous IE6
    Par nixonne dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 16/12/2009, 11h34
  2. div qui ne s'adapte pas à la taille de l'image contenue
    Par Invité dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 24/05/2009, 22h33
  3. la tag table dans la page de mon iframe qui ne s'affiche pas sous IE
    Par witch dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 20/01/2008, 15h44
  4. [C#] Trace qui ne s'affiche pas toujours.
    Par vin100H dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/08/2007, 08h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo