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 : hauteur automatique


Sujet :

JavaScript

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut Iframe : hauteur automatique
    Bonjour.

    Je n'arrive pas à redimensionner mon iframe en fonction de son contenu.
    Pourtant ce n'est pas faute d'avoir chercher...

    Actuellement j'ai trouvé une méthode qui fonctionne en Safari, en IE (la plupart du temps) mais jamais en FireFox.

    Voici mon 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    if (typeof(JoomMyGolf.ResizeIFrame) == "undefined") {
     
    	JoomMyGolf.ResizeIFrame = function(iFrame, iBody){
    		var func = function() {
    		    try{
    		    	/*
    		        if (iBody.offsetHeight) {
    		        	iFrame.style.height = new jQuery(iBody).css('height');
    		        } else {
    		        	iFrame.style.height = (iBody.scrollHeight + 18) + "px";
    		        }
    		        */
    		       	iFrame.style.height = (iBody.scrollHeight + 18) + "px";
    		    }
    		    catch(err){
    		        alert('Err: ' + err.message);
    		        window.status = err.message;
    		    }
    		}
     
    		func();
    	}
     
    }
    et l'appel à ce dernier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <iframe name="com_mygolf_iframe" src="xxx" style="visibility: hidden; height: 1%; width: 100%; border-style: none; overflow: auto;" onload="JoomMyGolf.ReloadIFrame(this); JoomMyGolf.CheckMe();"></iframe>

  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,
    tu nous parles de JoomMyGolf.ResizeIFrame, mais on le voit nulle part dans ton appel ou tu parles de JoomMyGolf.ReloadIFrame et de JoomMyGolf.CheckMe

    donc je don't comprend

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Ce n'est pas grâve, j'ai résolu mon problème.
    Les difficultés avec les iframe consistent à savoir comment accéder aux objets document et window.

    Voici ma solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    JoomMyGolf.prototype.GetIFrameDocument = function(){
    		try {
    			return this.iFrame.contentDocument || this.iFrame.contentWindow.document || this.iFrame.document;
    		}
    		catch(err) {
    			JoomMyGolf.TreatError(err);
    		}
     
    		return null;
    	}
     
    	JoomMyGolf.prototype.GetIFrameWindow = function(){
    		try {
    			return this.iFrame.contentWindow || this.iFrame.contentDocument.defaultView;
    		}
    		catch(err) {
    			JoomMyGolf.TreatError(err);
    		}
     
    		return null;
    	}
     
    	JoomMyGolf.prototype.ResizeIFrame = function(){
    	    try{
    	       	this.iFrame.style.height = (this.GetIFrameDocument().body.scrollHeight + 18) + "px";
    	    }
    	    catch(err){
    	        JoomMyGolf.TreatError(err);
    	    }
    	}

  4. #4
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Je ne savais pas que cela était possible.

    Merci pour la fonction Sergejack

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Ça ne fonctionne que pour des sites d'un même domaine.
    Et il me semble que même avec cette restriction Chrome n'accepte pas l'interaction fenêtre <-> iframe.

  6. #6
    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 Sergejack
    Ça ne fonctionne que pour des sites d'un même domaine.
    Et il me semble que même avec cette restriction Chrome n'accepte pas l'interaction fenêtre <-> iframe.
    effectivement en tout cas en local, ce n'est pas possible avec Chrome, en ligne je ne s'aurais dire.

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Et bien, il s'avère que cela fonctionne aussi avec Chrome.
    Je suis rassuré que Chrome soit bien au diapason avec ses concurrents à ce niveau car il n'y a pas de raison de "sécuriser" différemment.

    Au fait : travailler en local (je ne parle pas de localhost mais bien de c:/...) est travailler hors de tout domaine, donc il n'est pas surprenant que ça puisse ne pas marcher dans ce contexte là.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Hauteur automatique d'iframe
    Par kap dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 22/08/2013, 08h24
  2. hauteur automatique pour un iframe !
    Par papay84 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/03/2010, 13h25
  3. Iframe hauteur automatique
    Par DjPefH dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 11/09/2009, 14h36
  4. iframe à hauteur variable selon le contenu
    Par FrankOVD dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 12/06/2006, 11h34
  5. [IFrame] Dimension automatique
    Par Tueur_a_gage dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/01/2006, 08h44

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