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 :

[Abandonné] Passage de variable dynamique dans un window.opener


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut [Résolu] Passage de variable dynamique dans un window.opener
    Bonjour,

    Je cherche à passer une variable dans un window.opener. Le contexte : j'ai plusieurs pages qui appellent une popup unique, et celle-ci renvoie une variable en fonction de la page appelante.

    Voici ce que j'ai pour l'instant :

    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
    18
    19
    20
     
    <script language="JavaScript" type="text/javascript">
    	var page = String(window.opener.document.title); // on récupère le nom de la page appelante
    	//DEBUG : 
    	//alert("Page : " + page);
    	if (page == 'New Action')
    	{
    		var champ = 'action_date';
    		alert("window.opener.document.forms[0]." + champ + ".type = \"text\";");
    		alert("window.opener.document.forms[0]." + champ + ".value = \"<?php echo $date; ?>\";");
    	}
    	else if (page == 'IRD')
    	{
    		var champ = 'activiteDate';
    		alert("window.opener.document.forms[0]." + champ + ".type = \"text\";");
    		alert("window.opener.document.forms[0]." + champ + ".value = \"<?php echo $date; ?>\";");
    	}
     
    	window.opener.focus();
    </script>
    L'alert() affiche bien les lignes window.opener..., les valeurs sont correctes, que ce soit le javascript ou le php.

    Seulement je ne sais pas comment les exécuter, quelle est la syntaxe pour afficher mon champ (ici en rouge) :
    window.opener.document.forms[0].champ.type = "text";

    J'ai aussi essayé avec un :
    document.write("window.opener.document.forms[0]." + champ + ".type = \"text\";");
    mais forcément cela m'écrit la commande dans la popup.

    Je suis plutôt débutant en JS, je ne sais pas si c'est possible de faire passer cette variable, et si oui comment.

    Merci d'avance pour votre aide

    Edit 27/10 : résolu
    Il fallait mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.opener.document.getElementById(sourceI).value = "<?php echo $date; ?>";
    Merci à Florent d'HFR

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Une petite recherche t'aurais certainement permis de trouver ce lien.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut
    Oui désolé, j'avais vu ce lien (et d'autres) par Google, mais je n'avais pas compris les explications, d'où ma demande d'aide...

    En revanche je viens d'en trouver un qui répond à ma question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    window.opener.document.forms[0][champ].type = "text";
    Cela fonctionne parfaitement

    Merci Bovino et désolé du doublon

  4. #4
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut
    Je suis de nouveau bloqué depuis tout-à-l'heure... Je ne parviens pas à récupérer le nom de l'input de la page appelante (ce que j'ai mis en premier message ne fait finalement pas l'affaire).

    Voilà les 2 pages appelantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" name="action_date" id="action_date" value="calendar" onClick="ouvrirPopup2('../calendrier/calendar.php', 'calendrier', 170, 170, 685, 200)"/>
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name='activiteDate' id='activiteDate<?php echo $i; ?>' title='Click to modify'  value = '<?php echo dateFr($dateObjectif); ?>' onClick='ouvrirPopup2("../calendrier/calendar.php", "calendrier", 170, 170, 550, 100);' >
    Cela fait 2h que je cherche, de partout il est indiqué d'utiliser getElementsByName ou getElementsById, et rien de ce que je teste ne fonctionne...

    Je voudrais récupérer le name, qui est toujours fixe, pour identifier la page d'origine, pour ensuite pouvoir l'actualiser.

    Un petit conseil ?

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.opener.document.forms[0][champ].type = "text";
    Tu cherches à modifier le type de ton input ???

    Sinon,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.opener.document.forms[0].elements[champ];
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.opener.document.getElementById(champ);
    il est indiqué d'utiliser getElementsByName ou getElementsById
    Attention, c'est getElementById (sans s, car l'id doit être unique dans la page !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Tu cherches à modifier le type de ton input ???
    Oui, l'input du premier code est un bouton

    Citation Envoyé par Bovino Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.opener.document.forms[0].elements[champ];
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.opener.document.getElementById(champ);
    C'est bien ce que j'ai lu ailleurs, mais cela ne fonctionne pas, il me manque un truc pour piger ce fonctionnement : le getElementById récupère la valeur de l'id et le getElementByName récupère le name, c'est bien ça ? Si oui dans mon cas je ne peux faire qu'avec le name puisque l'id est dynamique. Donc pour mes tests j'ai mis activiteDate A la place de champ, qui est l'attribut name de mon input. Ce n'est pas lui qu'il faut indiquer ?

    J'ai mis pour vérifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var name = window.opener.document.getElementById(activiteDate);
    alert(name);
    Mais je n'ai aucun retour...

    Merci pour ton aide !

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/03/2010, 18h58
  2. Afficher une variable dynamique dans la barre des taches de windows
    Par mustang-ffw02 dans le forum Windows Forms
    Réponses: 16
    Dernier message: 27/05/2007, 23h24
  3. Réponses: 4
    Dernier message: 19/05/2006, 14h30
  4. Enregistrement d'une variable dynamique dans un fichier
    Par zarbydigital dans le forum Langage
    Réponses: 13
    Dernier message: 24/12/2005, 21h28
  5. variable dynamique dans une fonction javascript
    Par Shivaneth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/04/2005, 15h58

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