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

HTML Discussion :

Redimensionnement dynamique d'une iframe


Sujet :

HTML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Par défaut Redimensionnement dynamique d'une iframe
    Bonjour,

    Actuellement j'utilise du javascript pour redimensionner une iframe par rapport à son contenu de cette manière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="content">
        <iframe name="tht" width="100%" src="path" onload='javascript:resizeIframe(this);'></iframe>
    </div>
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function resizeIframe(obj) {
        obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
    }

    Mais j'ai remarqué depuis quelque temps lorsque le fichier à afficher est trop gros (+ en parallèle il ya d'autre traitement sur la page) et que le serveur et lent, l'iframe ne se redimensionne pas ou pire ne se redimensionne pas et n'affiche rien.
    Peut être que la solution que j'utilise n'est pas la bonne. Je précise tout de même que les essai fait en local y a pas de souci.

    Y t'il d'autre moyen de faire exactement ce que je souhaite faire sans utiliser du javascript quelque chose de plus "robuste"?

    Sachant que je suis pas contre le fait d'utiliser du javascript si j'arrive à comprendre pourquoi dans certain cas ça ne marche pas

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Infographiste - Web Designer / Intégrateur
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Infographiste - Web Designer / Intégrateur

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Par défaut
    Salut,

    en local les éléments se charge beaucoup plus vite.
    Le problème que tu doit rencontrer c'est qu'un éléments n'as pas du être charger lors de l’exécution du JavaScript.

    En utilisant juste du css comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #content iframe {
    	width: 100%;
    	height: 100%;
    }
    Et mettre les dimensions au "#content"

    En faisant "scrollHeight" c'est quel valeur que tu veux récupérer ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 145
    Par défaut
    +1 Kitzumé

    Le truc c'est qu'il veut que la iframe prenne la hauteur de son contenu et pour ça, la fonction JS récupère la hauteur de scroll de la iframe.

    Le soucis est effectivement le temps de chargement.
    Il faudrait appliquer le JS q'une fois que la page est chargée.

    Avec Jquery ça pourrait être simple en utilisant l'objet window

    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
     
    <html>
    <head>
    <script type='text/javascript' src='http://code.jquery.com/jquery-1.11.1.min.js'></script>
    <script type='text/javascript'>
    $(window).load(
            function(){
                    jQuery('#tht').height(jQuery('#tht').find('body').height());
            }
    );
    </script>
    </head>
    <body>
     <iframe name="tht" id="tht" width="100%" src="path"></iframe>
    </body>
    </html>
    (j'ai ajouté un id sur la iframe)
    Je sais pas si ce code va fonctionner mais on doit pas être très loin.

  4. #4
    Membre averti
    Homme Profil pro
    Infographiste - Web Designer / Intégrateur
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Infographiste - Web Designer / Intégrateur

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Par défaut
    Ok je m'en douté.

    Vu qu'il utilise pas de jQuery il cherche une méthode sans

    JAVASCRIPT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <script type='text/javascript'>
    function autoResize(iframe){
            var body = iframe.contentWindow.document.body;
            var frameHeight = body.scrollHeight;
            var frameWidth = body.scrollWidth;
            iframe.height = frameHeight;
            iframe.width = frameWidth;
    }
    </script>
    et mettre dans iframe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     onLoad="autoResize(this);"
    Les iframes sont très particulier. Il doit être sur le même domaine (sécurité)
    Et la solution été déjà sur le forum

Discussions similaires

  1. Redimensionnement dynamique d'une colonne
    Par AngePierre dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/06/2015, 06h40
  2. Réponses: 0
    Dernier message: 03/10/2011, 09h55
  3. Réponses: 11
    Dernier message: 02/06/2007, 01h55
  4. [iframe]redimensionner une iframe depuis elle même
    Par gisele dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/01/2007, 18h01
  5. Changement dynamique d'une iframe
    Par davids21 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/05/2005, 13h30

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