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 :

Activation par une fenetre fille d'un événement d'un champ d'une fenetre mère


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Par défaut Activation par une fenetre fille d'un événement d'un champ d'une fenetre mère
    Bonjour,

    J’essaie d’appeler une fonction javascript d’une fenetre mère depuis une fenetre fille mais toutes mes tentatives ont été des échecs : j’ai besoin de votre aide …
    Voici le descriptif du besoin :
    Un formulaire est dans une fenetre mère. Un champ texte « CHMP1 » peut soit être modifié directement par l’utilisateur, soit modifié via une fenetre fille activée par un bouton. Le bouton ouvre une fenetre fille qui exécute un traitement (la fenetre fille dialogue aussi avec l’utilisateur) ; en fin de traitement, la fenetre fille modifie le champ « CHMP1 » de la fenetre mère puis se ferme.
    Une fois que le champ « CHMP1 » a été modifié, une fonction javascript « chmp1_func() » doit s’exécuter (dans la fenetre mère).

    Lorsque le champ « CHMP1 » est modifié directement par l’utilisateur, pas de problème : l’évenement onChange est activé et appelle la fonction chmp1_func() .
    Par contre, lorsque le champ « CHMP1 » est modifié par la fenetre fille, l’evenement onChange n’est pas activée.

    Une idée de la procédure à suivre pour faire s’exécuter la fonction « chmp1_func() » dans la fenetre mère depuis la fenetre fille ?
    Merci d’avance …

  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


    Je vous conseille de travailler avec sessionSTorage ou localStorage.

    La fenêtre fille peut remplir un booléen signifiant que la valeur a été modifiée et transmettre des informations.

    La fenêtre mère doit écouter la valeur du booléen avant de réaliser une autre action et agir en fonction.

    Window.sessionStorage : https://developer.mozilla.org/fr/doc...sessionStorage

    Fille : sessionStorage.setItem('clé', 'valeur'); // valeur est toujours du texte, penser à JSON.stringify() si nécessaire

    Mère : let data = sessionStorage.getItem('clé'); // data est toujours du texte, penser à JSON.parse() si nécessaire

    JSON.stringify : https://developer.mozilla.org/fr/doc...JSON/stringify


    EDIT

    D'autres méthodes peuvent avoir des effets indésirables.

    Par exemple onunload = https://developer.mozilla.org/fr/doc...lers/onunload:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const pop = open(url);
     
    pop.onunload = function() {
      // appel de votre fonction, se déclenchera également si l'utilisateur navigue vers une autre page.
    }

    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
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Par défaut
    Merci Danielhagnoul pour votre réponse.
    Je ne connaissais pas sessionSTorage ou localStorage : je vais étudier cela.
    En continuant à chercher j'ai aussi trouvé une autre solution en utilisant window.opener.postMessage(...) dans la fenetre fille et en programmant une écoute d'événement dans la fenetre mère (exemple : window.addEventListener('message', receiveMessage, false); et la function receiveMessage(event){ } pour traiter l'événement. )

    Je vais comparer les deux façons de faire ...
    Bonne journée !

  4. #4
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    Sinon une petit recherche sur le forum ...
    https://www.developpez.net/forums/d2...enetre-enfant/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Par défaut
    La problématique n'est pas la même : la question n'était pas de savoir comment passer une donnée d'une fenetre mère à une fenetre fille (ou vice-versa). La question était de savoir comment activer un événement (javascript) dans la fenetre mère par la fenetre fille. Si par exemple vous avez un champ "toto" dans la fenetre mère, avec une action "onChange", cette action sera exécutée si vous cliquez dans le champ "toto" et que vous changez directement la valeur au clavier. Mais si la valeur de "toto" est changée par une fenetre fille, l'action "onChange" ne sera pas activée automatiquement. La question initiale était donc de savoir comment le faire.

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198

  7. #7
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    La problématique n'est pas la même
    Le principe est exactement le même
    les fonctions étant rattachées à la fenêtre ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 12/11/2017, 11h35
  2. [CR XI] Comment utiliser un champ d'une classe fille ?
    Par ALEX731 dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 03/10/2013, 11h14
  3. [WD16] Comment énumérer les champs d'une fenêtre Fille MDI
    Par dvdbly dans le forum WinDev
    Réponses: 6
    Dernier message: 18/05/2012, 20h09
  4. Réponses: 4
    Dernier message: 15/04/2008, 17h41
  5. Réponses: 3
    Dernier message: 21/05/2007, 15h31

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