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 :

Créer une variable globale après un window.opener


Sujet :

JavaScript

  1. #1
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut Créer une variable globale après un window.opener
    Bonjour à tous,

    Dans un popup, je permet à un user de choisir une image avec un formulaire. Quand il clique le radio correspondant à l'image choisie, j'execute window_opener. Le bout de code du form du popup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    <input type='radio' name='image'
    value='image1.jpg'>
    onClick='window.close()'
    onChange='window.opener.affiche_image(this.value)'
    Et la fonction de la page parent qui doit afficher l'image choisie dans un div nommé "cadre_image":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function affiche_image(image_select){
    document.forms['formulaire'].elements['image'].value = image_select; 
    document.getElementById("cadre_image").innerHTML = 
    '<img src="images/'+image_select+'" />';
    }
    Tout fonctionne bien: lorsque je clique sur le radio, le popup se ferme et l'img s'affiche dans le div de la page parent. Mon problème, c'est que la variable image_select est ensuite perdue...comment faire pour la rendre globale et la réutiliser dans d'autres fonctions ?

    Merci d'avance de vos lumières.

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    window.opener.variable (popup) window.variable (ou variable) (page mère)
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  3. #3
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut

    oups Fremy, désolé j'ai pas compris ta réponse...
    ce que tu me dis là n'est pas idem que ce que j'ai fait ?
    En fait je voudrais pouvoir réutiliser cette variable dans d'autres fonctions de la page parent une fois le popup fermé. Pas seulement dans la fonction appelée par le window.opener.fonction() du popup...
    Ou alors je voudrais que cette fonction de la page parent, qui n'est apellée qu'une fois à la fermeture du popup puisse stocker la variable qui lui est envoyée...

  4. #4
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    et bien...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    window.opener.variable=0;
    window.opener.affiche_var=function() {
       alert (this.variable);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.affiche_var(); window.variable=1; window.affiche_var();
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  5. #5
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Désolé de faire le lourdingue...

    mais je ne vois pas comment insérer ça dans mon code php du form, puisque je dois le mettre sur une action onChange (voir mon 1er bloc de code)

    window.opener.variable=0;
    window.opener.affiche_var=function() {
    alert (this.variable);
    }

  6. #6
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <input type='radio' name='image'
    value='image1.jpg'
    onClick='window.close()'
    onChange='opener.image=this.value; opener.affiche_image()'>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function affiche_image(){
    this.document.forms['formulaire'].elements['image'].value = this.image; 
    this.document.getElementById("cadre_image").innerHTML = 
    '<img src="images/'+this.image+'" />';
    }
    ??
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  7. #7
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    this.document.forms['formulaire'].elements['image'].value = this.image;
    ça me sort en erreur comme quoi ce n'est pas un objet ou a la valeur null...
    sur page parent.
    Mais surtout, ce serait sympa que tu m'expliques pourquoi ton code permet de rendre la variable image globale sur la page parent et de la réutiliser dans d'autres fonctions.
    Mon code affichait bien l'image (ou une par défaut si popup non ouvert) mais la var restait limitée à la fonction appelée par window.opener...
    Là je nage un peu...

  8. #8
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Dans le popup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.opener.image="image.gif"
    Dans la page mère :
    C'est on ne peut plus equivoque...
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  9. #9
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    sauf que je ne suis pas un génie de 15 ans, je suis un "papa" de 43 balais qui a mis les pieds dans la construction de site il y a 2 ans sur un coup de tête au point de s'en passionner...et qui est ravi d'apprendre plein de trucs passionnants par des gens qui pourraient être mes mômes. Et puis, tu sais, à mon age, le cerveau se fait moins rapide, peut être parce qu'il s'est plus rempli et qu'il devient plus lourd...sois indulgent.

    Pourquoi alert ?

    Quoi qu'il en soit, chapeau à toi pour ta disponibilité et ta patience.

  10. #10
    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
    bonjour,

    pourquoi ne déclares-tu pas une variable gloable dans ton script ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var MonImageChoisie; //variable globale
     
    function affiche_image(image_select)
    {
     document.forms['formulaire'].elements['image'].value = image_select; 
     document.getElementById("cadre_image").innerHTML ='<img src="images/'+image_select+'" />';
     
     MonImageChoisie = image_select;
    }
    MonImageChoisie est une variable globale qui contiendra l'image choisie :

    -Dans la fonction affiche_image, image_select est une variable locale ('vue' uniquement par affiche_image).

    -A la fin de cette fonction tu affectes le contenu de image_select à MonImageChoisie qui est une variable globale ('vue' par toutes les fonctions de ton script).

    >Tu peux ainsi réutiliser le nom de l'image...

  11. #11
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    merci, c'est une piste interessante et je vais la creuser. Il semblerait que j'aie mal exposé mon problème...

  12. #12
    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
    sinon dynamiquement :
    devrait te créer une variable globlae ...
    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 !

  13. #13
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Citation Envoyé par SpaceFrog
    sinon dynamiquement :
    devrait te créer une variable globlae ...
    Ben c'est exactement ce que je lui expliquait, sauf que moi je partais du popup
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  14. #14
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Bonjour,

    J'ai essayé les 2 méthodes sans succès. Ou la la je rame !!!
    la fonction apellée par le window.opener du popup

    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
     
     
    function AfficherImage(nomImage,theme){
     
    document.forms['formulaire'].elements['image'].value = nomImage;
     
    if(nomImage == ""+nomImage+"")
    { 
    document.getElementById("cadre_image").innerHTML = '<img src="images/theme/'+theme+'/'+nomImage+'" />';
    monImage = window['nomImage'];
    monTheme = window['theme'];
    } 
    else
    {
    document.getElementById("cadre_image").innerHTML = '<img src="image/default.jpg" />';
    }
    }
    Cette fonction est ok. Tant que le popup n'est pas ouvert et aucune image sélectionnée, default.jpg s'affiche. A la sélection dans le popup, l'image sélectionnée vient la remplacer, preuve que les vars monImage et theme sont bien transmises à la fonction...OK.

    Mais si je veux réutiliser ces 2 vars dans une fonction...elles sont vides...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function autre{
    theme = monTheme;
    image = monImage;
    document.getElementById("cadre_image").innerHTML = '<img src="images/theme/'+theme+'/'+nomImage+'" />';
    }
    n'affiche rien du tout, preuve que les 2 vars sont perdues...

  15. #15
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function autre{
    theme = window.monTheme;
    image = window.monImage;
    document.getElementById("cadre_image").innerHTML = '<img src="images/theme/'+theme+'/'+nomImage+'" />';
    }
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  16. #16
    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
    Non on te dit de crée dynamiquement la variable dans le fentre qui reste ouverte !!!
    donc à partir de la popup:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     window.opener['varglobale']='coucou'
    ou alors prévoit directement dasn l'opener une variable globale que tu renseigne depuis la popup:
    dans la mère:
    et dasn la pop:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    self.opener.persiste="coucou"
    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 !

  17. #17
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    merci à vous ! super cool ! ça fonctionne impec !
    Bonne journée !

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

Discussions similaires

  1. [C#] Comment créer une variable globale?
    Par FraktaL dans le forum Windows Forms
    Réponses: 8
    Dernier message: 10/05/2017, 14h10
  2. Créer une variable globale de type tableau
    Par beegees dans le forum Langage
    Réponses: 1
    Dernier message: 27/10/2008, 00h26
  3. Créer une variable globale
    Par quiyai dans le forum Forms
    Réponses: 5
    Dernier message: 06/05/2008, 14h37
  4. Créer une variable globalle a la connection
    Par dem67 dans le forum Oracle
    Réponses: 3
    Dernier message: 14/11/2006, 14h18
  5. Réponses: 9
    Dernier message: 16/03/2006, 20h34

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