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 :

récupérer le id de l'iframe qui prend le focus


Sujet :

JavaScript

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 133
    Par défaut récupérer le id de l'iframe qui prend le focus
    Bonsoir, c'est mon premier message dans le forum javascript ! Je rencontre une difficulté, si quelqu'un pouvait m'éclairer, voici ce que je fais :

    J'ai une page qui crée dynamiquement des iframes avec javascript (dans un onload).
    Chaque frame a un id.
    J'aimerais être capable de récupérer l'id de la frame qui reçoit le focus.

    Voici une partie du code, simplifiée :

    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
    // fonction lancée lorsqu'une frame prend le focus.
    function bam()
    {
      // essayer de faire un alert du id de la iframe qui a provoqué l'appel à bam
    }
     
    // fonction lancée dès le chargement de la page.
    function init()
    {
      for(id=0 ; id<nbFields ; id++)
      {
        var frame=document.getElementById("frame"+id);
        frame.contentDocument.designMode='On';
        frame.contentDocument.addEventListener('focus',bam,false);
      }
    }
    Voilà donc j'ai des iframe : frame0 frame1 frame2 ...
    Et je veux que lorsqu'on donne le focus à frame24 par exemple, que la fonction bam sache que c'est frame24 qui a appelé.

    Les solutions qui ne marchent pas :

    - Le principal problème est que l'on ne peut pas passer de paramètre dans le addEventListener, sinon ce serait du gateau de lancer bam(id).

    - J'ai entendu parler de window.frameElement.id mais je ne sais pas comment accéder à celà, car dans bam, le this pointe sur un HTMLDocument. Je ne parviens pas à accéder au window ... Je ne comprend pas trop sur quoi pointe ce this, je ne sais rien en faire

    En dernier recours, je pourrais créer une fonction bam par iframe, par exemple bam0 pour frame0 etc ... mais c'est pas du propre je trouve.

    Merci d'avance pour vos éclaircissements, j'ai beaucoup cherché, il est temps de dormir ...

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 133
    Par défaut
    bon finalement j'ai grugé le addEventListener en lui passant des paramètres par manière détournée avec un eval ...
    ça résoud le problème mais si quelqu'un peut m'indiquer quand même la solution pour atteindre l'id de l'iframe, ça m'intéresse toujours.

    pour info, voilà ce que j'ai fait, mais ça ne me satisfait que moyennement :

    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
          var nbFields=3;
          function bam(i)
          {
            alert(i);
          }
          function init()
          {
            var id;
            for(id=0 ; id<nbFields ; id++)
            {
              var frame=document.getElementById("frame"+id);
              frame.contentDocument.designMode='On';
              eval("frame.contentDocument.addEventListener('focus',function(e) {bam("+id+");},false)");
            }
          }
    à noter que sans le eval, il m'affiche toujours la valeur de nbField car le bam(id) n'est pas évalué à la déclaration de la fonction, il vaut donc toujours nbField car c'est la dernière valeur qu'il prend.
    c'est tordu mais ça fonctionne.

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

Discussions similaires

  1. [POO] récupérer l'id d'un objet qui a le focus.
    Par chateau64 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/05/2008, 10h43
  2. Un bouton qui prend le focus
    Par Ludo_360 dans le forum Delphi
    Réponses: 12
    Dernier message: 28/06/2007, 18h04
  3. iFrame qui prend tout la largeur de l'écran
    Par p3andsga dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 14/04/2007, 23h21
  4. [VB.NET] DataReader qui prend enormement de memoire
    Par JohnGT dans le forum Windows Forms
    Réponses: 9
    Dernier message: 07/01/2005, 17h38
  5. Récupérer l'id d'un élément qui vient d'être inséré
    Par sg-40 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2004, 10h30

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