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 :

on click sur un élément dans un iFrame. Quelque chose m'échappe !


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Par défaut on click sur un élément dans un iFrame. Quelque chose m'échappe !
    Bonjour,

    Help... Je tourne en rond sur un problème.. et pourtant, c'a devrait marcher !

    J'affiche un iFrame dans ma page.. je n'ai pas le choix...
    Mon php envoie au javascript mon iFrame encadré par un <div> :'<div class="container-edit-image"><iframe id="imgeditorframe" ...... ></iframe></div>.

    C'a fonctionne et ma page s'affiche, la voici (simplifiée) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div style="position: relative;" id="app-attachment-upload-container">
        <div class="container-edit-image">
            <iframe id="imgeditorframe"  src="..... " >
                <div class="main-actions">
                <input class="btn-main closeEditAttachment" id="btnsave" name="btnsave" value="Enregistrer et fermer" type="button"></div>
            </iframe>
        </div>
    </div>

    Je veux atteindre le bouton "btnsave" à l'intérieur de l'iFrame..
    en principe c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('#imgeditorframe').contentWindow.jQuery('.main-actions').on('click', '#btnsave', this.closeEditAttachment );
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('#imgeditorframe').contentWindow.on('click', '#btnsave', this.closeEditAttachment );
    J'ai essayé de sélectionner avec iframe , imgeditorframe, 'iframe[name=imgeditorframe, etc... rien n'y fait.. comme toutes sortes d'autres tentatives...


    J'ai placé des marqueurs dans mon javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    jQuery('#app-attachment-upload-container').append('<b>--editeur--</b>').append(ret.html) ;  // affiche bien mon marqueur --editeur--, puis mon iframe (qui est dans ret.html)..
    jQuery('.container-edit-image').append('<b>--editeur1--</b>') ;						// affiche bien mon marqueur --editeur1-- dans le div où 
    jQuery('#imgeditorframe').contentWindow.jQuery('main-actions').append('<b>--editeur2--</b>') ;  // rien ne se passe !!!
    document.getElementById('#imgeditorframe').append('<b>--editeur3--</b>') ;				// rien non plus...
    Comment voir ce qu'il y a dans document.getElementById('iframe[name=imgeditorframe]').contentWindow ?
    si je fais : var essai = document.getElementById('#imgeditorframe') ; le débogueur de Mozilla me dit que essai est "Null" !

    J'ai dû louper une marche... Merci d'avance pour toute aide bienvenue !!

    JP

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Il ne faut pas mélanger le Vanilla JS et le jQuery.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var jObjBtnSave = $( "#imgeditorframe" ).contents().find( "#btnsave" );
     
    // ex 1
    jObjBtnSave.css({ "color" : "red" });
     
    // ex 2
    jObjBtnSave.on( "click", function( e ){
      console.log( e.type, e.target );
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Par défaut Génial ! merci
    Bonsoir Daniel,

    Effectivement, il y a un piège..
    Si je comprends bien, contentWindow, c'est du Vanilia, et content() du jQuery !!
    Je n'ai pas réessayé avec getElementById, mais c'est aussi du Vanilia..

    Donc, quand on mélange du Vanilia et du jQuery, parfois ç'a passe, parfois ç'a casse !

    Autre surprise... $() ne marche pas ... jQuery() est ok. Mais ç'a je l'avais repéré..

    Encore merci

    JP

  4. #4
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Citation Envoyé par jpbigot
    Si je comprends bien, contentWindow, c'est du Vanilia...
    Je n'ai pas réessayé avec getElementById, mais c'est aussi du Vanilia
    C'est du Javascript !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var doc=document.getElementById ("imgeditorframe").contentWindow.document;
    doc.getElementById("btnsave").onclick=function(){this.closeEditAttachment};

  5. #5
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Décembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Décembre 2015
    Messages : 7
    Par défaut les emm. volent en escadrilles ! comment attendre la fin de l'affichage d'un append() ?
    Ca marche... presque !

    Voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    jQuery('#app-attachment-upload-container').append(ret.html) ;          // mon iframe s'affiche
    jQuery( "#imgeditorframe" ).contents().find( "#btnsave" ).on( "click", function(){ jQuery('#app-attachment-upload-container').hide() });
    Il ne marche pas, sauf quand je mets un point d'arrêt sur la 2e ligne !
    Le débugueur s'arrête sur la ligne, je passe, et le script s'exécute jusqu'au bout...
    Je clique sur le bouton #btnsave, le débugueur s'arrette à nouveau sur la ligne, je passe, et là ok, mon instruction hide() fonctionne !

    Est-ce parce que le append(ret.html) n'a pas eu le temps de charger ?
    Comment fonctionne javascript ? Est-ce qu'il attend de finir une instruction append() avant de passer à la suite ?
    J'ai essayé en mettant mon instruction append() dans une fonction, c'est idem...

    JP

  6. #6
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Je ne connais pas JQuery (et aucune autre bibliothèque d'ailleurs), mais le paramètre de la méthode append ne devrait-il pas être entouré de guillemets ou apostrophes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jQuery('#app-attachment-upload-container').append('ret.html');
    car il s'agit d'une chaine de caractères

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/03/2008, 15h02
  2. Catch un click sur un lien dans un ie
    Par krakoss dans le forum Windows
    Réponses: 1
    Dernier message: 06/07/2007, 15h38
  3. [vb.Net] Click sur un champ dans DataGrid
    Par More dans le forum Windows Forms
    Réponses: 8
    Dernier message: 06/03/2007, 11h35
  4. Réponses: 5
    Dernier message: 23/01/2007, 17h15
  5. simuler un double click sur une liste dans un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 1
    Dernier message: 01/09/2005, 10h45

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