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 et Firefox


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Points : 43
    Points
    43
    Par défaut IFrame et Firefox
    Bonjour,

    Dans le cadre d'une applic en Flex, j'ai besoin d'afficher le contenu d'un site. Pour cela je passe par une iframe. Coté Flex j'ai des methodes qui appelles mes fonctions javascripts.

    Le tout fonctionne parfaitement sous IE mais sous FF l'iframe n'apparait pas ( pour une fois que c'est IE qui marche bien...) L'applic est destiné à des gens qui utiliserons FF uniquement forcement

    Je pense donc que le problème se situe au niveau du javascript.

    Le page html étant créer par Flex Builder, je vais juste indiquer ce que j'ai rajouté ( et qui fonctionne tres bien sous IE ! )

    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
    <script language="JavaScript" type="text/javascript">
     
    // Major version of Flash required
    var requiredMajorVersion = 9;
    // Minor version of Flash required
    var requiredMinorVersion = 0;
    // Minor version of Flash required
    var requiredRevision = 0;
     
    function moveIFrame(x,y,w,h) {
        var frameRef=document.getElementById("myFrame");
        frameRef.style.left=x;
        frameRef.style.top=y;
        var iFrameRef=document.getElementById("myIFrame");	
    	iFrameRef.width=w;
    	iFrameRef.height=h;
    }
     
    function hideIFrame(){
        document.getElementById("myFrame").style.visibility="hidden";
    }
     
    function showIFrame(){
        document.getElementById("myFrame").style.visibility="visible";
    }
     
    function loadIFrame(url){
    	document.getElementById("myFrame").innerHTML = "<iframe id='myIFrame' src='" + url + "'frameborder='0'></iframe>";
    }
     
    </script>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="myFrame" style="position:absolute;background-color:transparent;border:0px;visibility:hidden;"></div>

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,soit j'ai mal compris, soit c'est plutôt FF qui réagit correctement

    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Points : 43
    Points
    43
    Par défaut
    J'uitlise showIFrame() quand j'ai besoin de l'afficher.

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Bonjour !
    Je suis tombé sur ce thread en cherchant moi aussi (désespérément) à faire fonctionner le composant iFrame sous FF (il marchait bien avec IE) et j'ai réussi !
    En fait il faut bien spécifier le wmode à opaque à différente endroits.
    Dans le fichier index.template.html, il y a quatre endroits à modifier :
    Dans la balise <object> :
    Il faut ajouter une balise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <param name="wmode" value="opaque"/>
    puis dans la balise <embed>, il faut ajouter une propriété :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <embed ..... wmode="opaque">
    </embed>
    ensuite, dans un des script JS, tu a un truc genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ( hasProductInstall && !hasRequestedVersion ) 
    {
    ...
    }
    dans ce if, tu as deux appel à la fonction AC_FL_RunContent()
    cette fonction prend une tripoté de paramètres. Il faut ajouter les paramètres wmode et opaque aux deux appels de cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    AC_FL_RunContent(
    		"src", "playerProductInstall",
    		........
    		"wmode", "opaque",
    	);
    J'espère que ca t'aide !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Points : 43
    Points
    43
    Par défaut
    En effet maintenant j'arrive à voir mon document...reste un problème cependant sous Firefox il se met en bas de page au lieu de se mettre dans mon composant IFrame..

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 24
    Points : 24
    Points
    24
    Par défaut
    Salut.
    Qu'est ce qui s'affiche en bas de page ?
    le composant IFrame de flex ? Ou l'iframe (HTML) ?
    Le problème vient peut être du style attribué à la balise DIV affichant l'iframe.
    Moi j'ai ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div id="myFrame" style="position:absolute;background-color:transparent;border:0px;visibility:hidden;"></div>
    et ca fonctionne correctement sous IE et FF.

    Si le problème vient plutôt du composant Flex, il faut savoir que la fonction privée IFrame::moveIFrame() n'est appelé que quand tu déplace le canvas IFrame. Cette méthode n'est donc pas appelée quand tu déplace un composant parent de l'IFrame (c'est le parent qui se déplace et pas le composant IFrame). Tu peux donc par exemple mettre la méthode IFrame::moveIFrame() en public et l'appeler quand tu déplace le composant parent de l'IFrame...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Points : 43
    Points
    43
    Par défaut
    Finalement,

    J'ai recommencé le code de l'iframe et JS à 0 et bien appliqué ce que tu as dit et cette fois ca fonctionne correctement

    Devait rester une petite crasse qui m'a échappée

    Merci

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

Discussions similaires

  1. iFrame et Firefox
    Par Melex dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 22/07/2010, 08h54
  2. execCommand sans iFrame sous Firefox
    Par NiRaDo dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 28/07/2009, 14h34
  3. Les iframe dans firefox avec Ajax
    Par zerog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/07/2009, 06h02
  4. redimensionnement d'une iframe sous firefox
    Par stars333 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 09/02/2008, 00h23
  5. [XHTML] Iframe dans FireFox
    Par virgul dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 21/12/2006, 08h07

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