Partage
  • Partager sur Facebook
  • Partager sur Twitter

Régler la hauteur d'une iframe en fonction de son contenu

sans toucher au code de l'iframe !

Anonyme
    22 décembre 2009 à 2:22:21

    Bonsoir,

    je dois intégrer une iframe non modifiable dans une page html, et je cherche à ajuster sa hauteur en fonction de son contenu. Je ne dois pas modifier l'iframe, j'ai donc pensé utiliser JS.

    Iframe intégrée de la façon suivante dans le HTML :
    <script src="https://----------------" type="text/javascript"></script>
    <script type="text/javascript">
    Liferay.Widget({ url: 'https://-------------'});
    </script>
    

    Le script pointe vers ce code :
    window.Liferay = window.Liferay || {};
    Liferay.Widget = function(options) {
    options = options || {};
    var id = options.id || '_Liferay_widget' + (Math.ceil(Math.random() * (new Date).getTime()));
    var height = options.height || '100%';
    var url = options.url || 'http://-------------------------';
    var width = options.width || '100%';
    var html = '<iframe border="0" height="' + height + '" src="' + url + '" width="' + width + '"></iframe>';
    document.write(html);
    }
    

    L'iframe n'est donc pas accessible via un attribut id.

    En appelant via le OnLoad du body du html appelant l'Iframe, j'exécute le code fonctionnel JS suivant :
    function iframe_mef() {
    frame =  document.getElementsByTagName('iframe')[0];
    
        frame.width=800;
        frame.height=500;
    


    J'aimerais récupérer la hauteur du contenu de mon iframe afin de remplacer le "500" par cette hauteur.

    Comment faire ?
    Merci par avance
    • Partager sur Facebook
    • Partager sur Twitter
      22 décembre 2009 à 9:26:43

      Bonjour.
      Habituellement je ne suis pas apte à aider les autres (pas assez bon :p ), mais comme j'ai eu un soucis similaire au tiens il y a très peu de temps, je pense que je peux t'aider.

      Il faudra par contre que tu ai un moyen d'accéder a ton iframe, soit lui ajouter un id, ce qui je pense est la meilleur solution et ne devrais pas poser de problème dans ton cas, soit autre chose, a toi de voir.

      Voici une ligne javascript qui te permet de récupérer la hauteur du contenu de ton iframe:
      //récupération de la hauteur du contenu:
      var hauteur = document.getElementById('id_iframe').contentWindow.document.body.scrollHeight;
      //changement de la hauteur de ton iframe:
      document.getElementById('id_iframe').style.height =  hauteur + "px";
      


      Voila j'espère que ça t'aidera!
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        22 décembre 2009 à 11:31:45

        Désolé, je n'ai vraiment aucun moyen d'ajouter un id sur cette frame externe.

        J'ai utilisé le TagName, ça devrait marcher et pourtant, ce code n'a aucun effet :
        frame =  document.getElementsByTagName('iframe')[0];
        frame.width=800;
           //récupération de la hauteur du contenu:
           var hauteur = frame.contentWindow.document.body.scrollHeight;
           //changement de la hauteur de ton iframe:
           frame.style.height =  hauteur + "px";
        

        Le premier frame.width fonctionne parfaitement, et si je remplace width par height, ça marche aussi. Mais les deux lignes suivantes du code plantent, je ne comprends pas pourquoi !

        NOTE : L'iframe n'est pas dans le dossier du site, et n'est peut-être même pas sur le même serveur... Ca joue ?
        • Partager sur Facebook
        • Partager sur Twitter
          22 décembre 2009 à 11:52:56

          Il me semble que c'est impossible si la frame n'est pas sur le meme serveur.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            22 décembre 2009 à 12:47:17

            Merci, je vais tenter de m'arranger comme je peux...
            • Partager sur Facebook
            • Partager sur Twitter

            Régler la hauteur d'une iframe en fonction de son contenu

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown