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 :

Problème avec window.close()


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 36
    Points : 20
    Points
    20
    Par défaut Problème avec window.close()
    Tout d'abord bonjour.

    Je rencontre un petit soucis avec une fonction javascript.

    J'ouvre un pop-up qui execute une requête dans une base SQL.

    Ce pop-up nous affiche un certain nombre de résultat et au clique sur l'un d'eux, la valeur est envoyée à la page parente (à l'aide d'un window.opener) et le pop-up est, pour finir, fermé.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function choix(produit,ligne) {
    var truc;
    truc = window.opener.document.forms[0].elements["produit"].value=MA_VALEUR;
    eval(truc);
    window.close();
    }
    Il fonctionne très bien avec des valeurs ne contenant que des chiffres.

    Mais des que celle ci contient des lettres ou caractères spéciaux, le window.close() n'a plus aucun effet (le window.opener lui fonctionne)

    J'ai l'erreur MA_VALEUR est indéfini.

    Exemple de valeur qui bloquent le close :
    UG25213/D
    GLU/BLOC/PROTECT
    HGT_111


    J'ai bien essayé de rajouter des quote, slash mais rien à faire.

    Si quelqu'un pouvait m'aider

    Merci d'avance

  2. #2
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Salut MA_VALEUR provient de quoi? est seulement en guise d'exemple

    c'est a dire que si tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function choix(produit,ligne) { 
    var truc; 
    truc = window.opener.document.forms[0].elements["produit"].value=12345; 
    eval(truc); 
    window.close(); 
    }
    Ca passe??

    et si tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function choix(produit,ligne) { 
    var truc; 
    truc = window.opener.document.forms[0].elements["produit"].value=UG25213/D; 
    eval(truc); 
    window.close(); 
    }
    ca ne passe pas?

    Est-ce exact ou je suis dans le champs dans ma compréhension?
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 93
    Points : 114
    Points
    114
    Par défaut
    "UG25213/D" et "GLU/BLOC/PROTECT", après être passées dans le colimateur de la méthode eval, sont sûrement interprétés comme des expressions régulières (regular expressions) mal formées.

    Quant à HGT_111, c'est interprété comme une valeur non initialisé ou non caractérisée par exemple avec le mot clef var.

    eval, n'oublie pas, transforme une chaîne de caractère en expression...

    C'est comme si tu dumpais, avec tes exemples, des expressions régulières (mal formées en plus) ou des variables venues de nulle part n'importe où dans ton code.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    ozzmax > Oui c'est bien ça

    Claude > J'ai pensé aussi au fait que ces valeurs soient interprétés comme expressions régulières, mais comment faire en sorte de les passer comme chaîne de caractère "normale" ?

    Quant à HGT_111, c'est interprété comme une valeur non initialisé ou non caractérisée par exemple avec le mot clef var.
    Pourtant le MA_VALEUR est en fait égale à la variable "produit" envoyée à la fonction ( choix(produit,ligne) ) Je ne l'avais pas précisé, il est vrai.

    En clair

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function choix(produit,ligne) {
    var truc;
    truc = window.opener.document.forms[0].elements["produit"].value=produit;
    eval(truc);
    window.close();
    }
     
    et 
     
    <a href="#" onclick="choix('HGT_111','2');"> Lien </a>

    Je vais donc continuer me recherches, surtout dans la direction des expressions régulières.


    Si vous avez d'autres idées, conseils, n'hesitez surtout pas ^^

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    Je crois qu'il est important de préciser aussi, que ça ne fonctionne pas dès que je met une lettre dans ma valeur.

    A31340 me bloque la suite de ma fonction (le window.close() ) alors que 31340 passe.

    Ca ne fonctionne qu'avec des numéros quoi

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 93
    Points : 114
    Points
    114
    Par défaut
    La valeur "HGT_111" existe dans ton code, c'est vrai, mais pas la variable HGT_111.

    ... équivaut à interpréter ça comme le nom d'une entité, une variable par exemple. Pour que ce soit vu comme une chaîne de caractères, il faudrait écrire... C'est pour ça que lorsqu'il n'y a que des chiffres, la valeur est définie, tandis que lorsque l'on ajoute une lettre, c'est indéfini car c'est interprété comme le nom d'une variable ou d'une fonction inexistante...

    Je me répète : eval convertit une chaîne en expression. Ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    eval("2 + 2") == 4    // est vrai, parce que 2 + 2 est vu et traité comme une addition
    eval("'2 + 2'") == 4  // est faux, parce que "2 + 2" est vu comme une chaîne de caractères.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    Ca commence à me prendre la tête là..


    Bon j'ai essayé avec cette expression directe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.opener.document.forms[0].elements["produit2"].value="AAA111";

    Celle ci affiche bien AAAA111 dans mon champs "produit2" et ferme mon pop-up !!!

    Donc je suis d'accord avec toi Claude lorsque tu dis que eval interprète ma valeur en nom de variable ou fonction.

    Mais comment donc faire pour que mon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval(window.opener.document.forms[0].elements["produit2"].value=produit);   // Avec produit = AAAA111
    Soit égal à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.opener.document.forms[0].elements["produit2"].value="AAA111";
    Ce sont les quotes qui foirent ou quoi ? J'ai essayer d'en rajouter des simples, doubles mais rien à faire.

    ===
    Pour infos voici un des mes liens qui appelle la fonction choix(produit,ligne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="radio" name="produit" value="produit" onClick="choix('AAAA111',6);">Mon produit<br />

  8. #8
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Salut
    je n'ai pas la réponse a ton problème
    mais bon voilà
    si tu veux passer un parametre produit qui ce trouve a être ce que tu as mis comme value dans ton radio button, j'imagine que c'est ce que tu veux faire...
    tu peux faire ca?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="radio" name="produit" value="produit" onClick="choix(this.value,6);">Mon produit<br />
    Ca lui passerais l'objet directement
    c'est juste une supposition la a essayer
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    Bonne supposition, mais qui ne fonctionne, malheuresement, pas non plus :'(

Discussions similaires

  1. Probléme avec window.open()
    Par faico dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/07/2006, 13h09
  2. Problème avec windows messenger
    Par yasinfo dans le forum Messagerie instantanée
    Réponses: 1
    Dernier message: 12/06/2006, 12h40
  3. Problème avec window.scrollTo
    Par maxoudra dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/04/2006, 08h56
  4. Probléme avec window.opener.document
    Par FoxLeRenard dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/02/2006, 20h38
  5. Problème avec Windows XP
    Par Beryl dans le forum Windows XP
    Réponses: 1
    Dernier message: 24/11/2005, 22h30

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