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 :

Redimensionner une iframe à la hauteur de son contenu


Sujet :

JavaScript

  1. #1
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut Redimensionner une iframe à la hauteur de son contenu
    Bonjour,

    Je cherche un moyen de redimensionner la hauteur d'une iframe à celle de son contenu.

    Le javascript doit être placé sur la page parente (celle qui contient l'iframe) et les domaines entre la page parente et fille sont différent.

    Existe t il un moyen de faire cela ?

    Mes recherches m'ont mené vers ce code :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <iframe src="url" onload="this.height = frmHeight(this)+'px';"></iframe>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function frmHeight(f){
       myf = f.contentWindow.document || f.contentDocument;
       return myf.height || myf.body.offsetHeight;
    }
    Mais quoi que je fasse j'ai toujours l'erreur suivante (à cause des domaines différent ?) :
    Permission refusée d'obtenir la propriété Window.document
    Existe il un moyen de contourner le problème ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Points : 19
    Points
    19
    Par défaut
    Ce code marche chez moi :
    Code html : 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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
        <head>
            <title>Test</title>
     
            <script type="application/javascript" />
                function resizeFrame(fra) {
                    fra.style.height =  fra.contentDocument.body.offsetHeight + "px";
                }
            </script>
        </head>
     
        <body>
            <iframe src="dev.htm" onload="resizeFrame(this);" />
        </body>
    </html>

    La frame augmente bien quand la page incluse augmente mais elle est toujours très légèrement trop petite. Donc on peut modifier la fonction resizeFrame comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function resizeFrame(fra) {
        var hauteur = fra.contentDocument.body.offsetHeight + 20;
        fra.style.height = hauteur + "px";
    }
    En modifiant si besoin le 20.


    Edit : maintenant que j'y pense, IE ne connait sans doute pas contentDocument (d'où les || dans ta fonction). Et là je m'y connais moins (je ne peux pas tester, je n'ai pas IE).

  3. #3
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    ça fonctionne aussi quand tu met par exemple http://www.google.fr/ dans le src de l'iframe ?

    parce que chez moi non

  4. #4
    Membre actif Avatar de nod__
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 176
    Points : 226
    Points
    226
    Par défaut
    Citation Envoyé par Seb33300 Voir le message
    Mais quoi que je fasse j'ai toujours l'erreur suivante (à cause des domaines différent ?) :


    Existe il un moyen de contourner le problème ?
    Tout est dit C'est une limitation de sécurité de tous les navigateurs (un peu la même raison pour laquelle tu ne peux pas faire de requetes AJAX distantes). C'est pas pour rien que les publicitaires incluent tous leurs pubs à partir d'une iframe

    Enfin bref, a moins d'avoir un reverse proxy ou de récupérer ta page à partir d'un script sur ton serveur… il ne te reste que tes yeux pour pleurer

  5. #5
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    C'est dommages que les restrictions soient autant strict

    On pourrait au moins avoir les droits en lectures

    Bref tant pis il y aura une barre de défilement sur l'iframe...

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Seb33300 Voir le message
    C'est dommages que les restrictions soient autant strict
    Oui, de très nombreux hackers sont d'accord avec toi

Discussions similaires

  1. Hauteur du iframe en fonction de son contenu
    Par Mister Nono dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/01/2010, 16h13
  2. Réponses: 0
    Dernier message: 23/02/2009, 16h42
  3. [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
  4. Ouvrir une feuille excel et mettre son contenu dans VB6
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 17/01/2006, 09h16
  5. Comment redimensionner un TEdit en fonction de son contenu ?
    Par Tempotpo dans le forum Composants VCL
    Réponses: 10
    Dernier message: 25/07/2005, 21h52

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