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 :

Communication sur Opener en cascade


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Communication sur Opener en cascade
    Bonjour,

    J'ai besoin que toutes les fenetres filles puissent communiquer avec le père d'origine (et non leur père).

    Exemple:
    A ouvre B dans une fenêtre externe.
    B ouvre C dans une fenêtre externe.
    C ouvre D dans une fenêtre externe.

    B, C, D executent leur code javascript, font ce qu'elles ont à faire, et doivent renvoyer un message à A.
    Leurs actions sont complétement asynchrones de leurs parents.

    Doit-on passer par père de D vers A (D,C,B,A)?
    Dans ce cas là, comment identifier le parent initial et établir le relais.

    Ou doit-on faire pointer par une inclusion de script dans les filles un second parent.
    Par exemple, D aurait A et C comme parent.

    A vous lire
    ++

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Et comment je sais combien d'opener.opener je dois mettre en cascade?

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci pour le traceur, surtout quand cela ne renvoit pas sur une explication au problème posé...

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    tiens un compteur dans la mère genre array avec nom de fenetre et niveau

  7. #7
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    Citation Envoyé par LeMaKal
    Merci pour le traceur, surtout quand cela ne renvoit pas sur une explication au problème posé...
    il y a un code qui montre comment naviguer dans une pop-up sans perdre le parent et différents codes pour transmettre des infos d'une fenêtre parent à une fenêtre mère....

    Tu as A qui ouvre B qui ouvre C qui ouvre D. Donc :
    Pour A qui ouvre B : tu transmets A à B.

    Pour B qui ouvre C : B connait A, donc transmets A à C... tu peux donc transférer de C vers A sans passer par B (même si B est fermée, normalement).

    Pour C qui ouvre D : C connait A, idem, transmets A à D ... tu peux donc transférer de D vers A sans passer par C ni par B (même si B et C sont fermées, normalement).

    Donc tu n'as pas à te soucier du nombre d'opener à utiliser.
    Néanmoins, si tu veux passer par là :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var parent;
    var p = window.opener;
    while (p!=null)
    {
      parent = p;
      p = parent.opener;
    }
    alert("fenetre parent : "+parent);

  8. #8
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Ok, merci pour cette méthode.
    J'avais omis de préciser qu'il y avait certaines fenetres sur lesquelles je n'avais la main hormis par injection de script, et je ne peux donc pas manipuler les noms des frames sans éviter de déclencher une erreur sur l'une de celles-ci.

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Moi je dis ...
    ça ne sent pas très bon tout ça ...

    Soit tu nous en dis plus, soit ce n'est pas ici que tu trouveras une réponse ...
    les fenetres dasn le popups sont sur ton domaine ?

  10. #10
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Je développe une application transverse de gestion de tests automatisés (pour des tests de non-regression), dont le coeur d'éxécution est basé sur Selenium.

    Les applis cibles sont des applications développées par mon client qui sont donc sur le même serveur que sur lequel mon appli est déployée.
    Cependant, pour éviter de retoucher tous les fichiers, on est parti sur soit de l'inclusion taglib, soit sur l'injection préprocesseur (cette option est la plus probable).

    Donc pour ce qui est du code injecté, j'ai beaucoup de contraintes, tel notemment ne pas gêner l'execution normale des applis et de leurs scripts initiaux .

    Je teste le bout de code suivant qui à l'air de bien passer.

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var lanceur; // la page du lanceur
     
    // On va récupérer l'opener premier
    var parent = window.opener;
    while (parent!=null) {
      lanceur = parent;
      parent = lanceur.opener;
    }

    Merci pour les infos.
    ++

  11. #11
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    Citation Envoyé par LeMaKal
    Je teste le bout de code suivant qui à l'air de bien passer.

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var lanceur; // la page du lanceur
     
    // On va récupérer l'opener premier
    var parent = window.opener;
    while (parent!=null) {
      lanceur = parent;
      parent = lanceur.opener;
    }

    Merci pour les infos.
    ++
    pour être plus rigoureux :
    Code javascript : 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
     
    var lanceur = null; // la page du lanceur
     
    // On va récupérer l'opener premier
    var parent = window.opener;
    while (parent!=null) {
      lanceur = parent;
      parent = lanceur.opener;
    }
     
    if (lanceur==null)
    {
       alert("Cette page n'a pas de parent");
    }
    else
    {
      //...................//
    }

Discussions similaires

  1. Importer les models 3DS sur Open GL
    Par Dev-FX dans le forum OpenGL
    Réponses: 7
    Dernier message: 17/07/2006, 10h47
  2. Communication sur le port parallèle
    Par zekicker dans le forum MFC
    Réponses: 1
    Dernier message: 11/12/2005, 13h39
  3. violation d'accès sur open de TQuery
    Par letissya dans le forum Bases de données
    Réponses: 5
    Dernier message: 08/11/2005, 14h35
  4. Qui Prime ? Filtre ou Ac Last sur Open du form???
    Par samlepiratepaddy dans le forum Access
    Réponses: 7
    Dernier message: 07/11/2005, 16h32
  5. Peut-on tester un enregistrement dans form sur open?
    Par samlepiratepaddy dans le forum Access
    Réponses: 7
    Dernier message: 13/09/2005, 12h33

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