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 :

Accès au body d'une Iframe.


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 13
    Points : 15
    Points
    15
    Par défaut Accès au body d'une Iframe.
    Bonjour à tous,
    après parcours de plusieurs forums sans succès, je viens quémander un peu d'aide.

    Voici le contexte :
    un clic est fait sur une image située dans une frame.
    Une fonction javascript , déclenchée par ce clic créer une Iframe, puis l'ajoute ( si elle n'y existe pas déjà), au dom d'une autre frame ( du même frameset) et retourne le contenu de l'Iframe.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var popupFrame = document.createElement("iframe");
    popupFrame.id = "popupFrame";
    document.body.appendChild(popupFrame);
     
    if (document.body && !document.getElementById(popupFrame.id))
    {
    document.body.appendChild(popupFrame);
    }
    /*Bloc de paramétrage 
    et d'affectations de fonctions pour l'affichage de la page. */
    return document.getElementById(popupFrame.id).contentWindow;
    après celà je récupère ce contenu et je tente d'affecter des valeurs au document.body de l'iframe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    monPopup = createWindowPopup(); //fonction renvoyant le contenu de l'iframe.
    var popupBody  = monPopup.document.body;
     
    popupBody.style.backgroundColor = "#FFFFFF";
    Sur cette dernière ligne, le javascript plante sous IE car le document.body est null au premier déclenchement. si après cet échec, je re clic, mon iframe se s'affiche correctement.

    j'en ai déduit que sous IE, le createlement est interrompu par le chargement de la frame de destination, ou quelque chose dans le genre.

    entre la ligne de création de l'iframe, et l'utilisation de son body, l'ajout d'un bête alert('bar'); suffit à solutionner le problème, toutefois, hors de question d'avoir des alert partout à chaque clic.

    la syntaxe semble bonne puisque au second clic le code fonctionne comme sur des roulettes.

    hors contexte sur une page de test, pareil, ça fonctionne comme un charme.

    en revanche dans le contexte IE ne veux rien savoir, et je m'arrache les cheveux.

    j'ai projet de refaire ces menu en DIV plutôt qu'en iframe, mais je n'ai pas le temps de refondre tout ce qui va autour pour l'instant, je suis contraint de chercher.

    j'espère avoir été suffisamment clair, merci de votre aide.

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Salut,

    Frames + IFrames multiples, aïe. Entre ergonomie zéro et restrictions (ou failles ^^) de sécurité, j’espère que tu as de bonnes raisons pour utiliser cette technologie du siècle dernier.

    Quoiqu’il en soit, il est possible que le body de ton IFrame ne soit pas chargé au moment où tu le manipules. Dans ce cas, une fonction de rappel sur l’évènement onload résoudra ton problème :
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    monPopup.document.body.onload = function() {
        this.style.backgroundColor = '#FFFFFF';
    }

    Essaye déjà ça et reviens nous voir

Discussions similaires

  1. Accès aux éléments d'une iframe hors domaine
    Par Difré91 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/04/2012, 14h58
  2. Accès au contenu d'une iFrame sous Firefox
    Par pierrotparma dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/12/2010, 11h53
  3. L' accés est refusé depuis une Iframe
    Par th0mas dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/05/2008, 13h15
  4. Acces au contenu d'une iframe
    Par Devether dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/11/2007, 08h44
  5. Accès à un ID dans une iframe
    Par speedev dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/11/2006, 16h43

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