Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Modification variable à partir window.opendialog

Envoyé par : jeremie

Date : 30/01/2007 10:31

Bonjour à tous!

Alors voila j'ai une fentre principale qui ouvre une deuxième fenetre avec window.opendialog avec certains paramètres.

Dans la deuxième page j'arrive a exploiter les données passées en parametres dans window.opendialog mais je n'arrive pas a modifier les variables de la premiere fenetre.

window.openDialog('chrome://pecoto/content/correction.xul',...) />

ensuite dans la deuxieme page

opener.document.t_Lignes[numligne].value = newligne;

t_Lignes est un tableau qui se trouve dans la premiere page.

En bref, à partir d'une fenetre Dialog, je ne peux modifier une variable (ici un tableau) déclarée dans la page appelante de ma dialog

Si vous avez un tuyau .....

Merci

# Re: Modification variable à partir window.opendialog

Envoyé par : rande

Date : 30/01/2007 11:05

window.opener.... ca devrait mieux marcher

# Re: Modification variable à partir window.opendialog

Envoyé par : jeremie

Date : 30/01/2007 11:08

Merci de ton aide mais ca marche pas j'avais deja essayer :)

window.opener.document.t_Lignes has no properties

Si ca peut aider quelqu'un...

# Re: Modification variable à partir window.opendialog

Envoyé par : rande

Date : 30/01/2007 14:45

Je viens de faire un test, toutes les variables que tu declare en global dans la fenetre d'origine sont accessible via : window.opener.document.defaultView

 [window]
 var theVariable = null;
 [popup]
 window.opener.document.defaultView.theVariable = "value";

mais remarque je n'ai pas utiliser openDialog, juste open. Il y a peut etre une difference dans l'implementation.

Tu peux toujours regarder dans le DOM Inspector.

# Re: Modification variable à partir window.opendialog

Envoyé par : jeremie

Date : 30/01/2007 15:53

Le problème c'est que je ne peux pas utiliser un window.open car je ne peux pas passer de paramètre vers la popup avec cette méthode.

Par contre window.opendialog permet de passer des parametres qui son recupérable dans la popup.

Dans la window principale je passe 4 paramètres.

  window.openDialog('chrome://pecoto/content/correction.xul','Correction','chrome,modal,width=600,height=600,centerscreen',"+i+",'"+ligne+"',"+j+",'"+ligneErreur+"');

Puis je les recupere dans la popup

var numligne = window.arguments[0];
var ligne = window.arguments[1];
var numChamp = window.arguments[2];
var ligneErreur = window.arguments[3];

Mon affectation marche bien mais je n'arrive pas modifier une variable de la fenetre principale. Comment faire?

Help!

# Re: Modification variable à partir window.opendialog

Envoyé par : chBok

Date : 30/01/2007 17:47

Est-ce cela que tu cherches : http://developer.mozilla.org/en/docs/DOM(..) ? Il n'y a plus qu'à trouver un volontaire pour traduire en français cette page :-) LOL

je cite :

var retVals = { address: null, delivery: null };
openDialog("http://example.tld/zzz.xul", "dlg", "modal", "pizza", 6.98, retVals);

# Re: Modification variable à partir window.opendialog

Envoyé par : Raphael

Date : 30/01/2007 22:35

Si c'est cette technique, je l'utilise... doit y avoir un post sur le forum avec le même problème que j'avais posé y a quelques mois. Ca marche bien.

Sinon pourquoi ne pas utiliser une variable globale que tu changes dans ton dialog ?

# Re: Modification variable à partir window.opendialog

Envoyé par : jeremie

Date : 31/01/2007 08:49

Cette solution serait parfaite mais comment faire pour déclarer une variable global a toutes les pages?

Merci

# Re: Modification variable à partir window.opendialog

Envoyé par : Raphael

Date : 31/01/2007 09:17

Bah si je me souviens bien... tu déclares une variable dans ta fenêtre principale... et tu lui affectes une valeur dans ton dialog, a priori ça marche car j'utilise cette technique pour quelques actions il me semble... genre ajouter un dossier/fichier/... et quand je retourne sur ma fenêtre principale c'est mis à jour.

# Re: Modification variable à partir window.opendialog

Envoyé par : jeremie

Date : 31/01/2007 09:26

Ok jai effectué plusieurs essai mais ca ne marche pas.

j'ai essayé :

window.opener.document.t_Lignes[numligne] = newligne;

Mais aussi :

window.opener.t_Lignes[numligne] = newligne

Mais j'ai toujours la même erreur window.opener.document.t_Lignes has no properties Voila

# Re: Modification variable à partir window.opendialog

Envoyé par : Raphael

Date : 31/01/2007 11:33

Voici un exemple de mon code :

Dans mon main.js :

var UserFormatID = getFormat();

En fait, de base, je charge mon format... grâce à ma fonction qui va chercher ma BDD SQlite3...

Dans mon prefs.js, chargé depuis mon prefs.xul qui est ma boite de dialogue de préférences :

// Préférences générales
function saveMain()
{
var Format_ID = document.getElementById('deck_format').selectedItem.getAttribute('value');
window.opener.ydmprefs.do("UPDATE main SET Value='"+Format_ID+"' WHERE Pref_ID='1'");
window.opener.UserFormatID = window.opener.getFormat();
initPrefs();
}

Ici, je peux modifier et sauvegarder mon format... et mon avant-dernière ligne modifie ma variable UserFormatID qui est donc a priori globale... =)

J'espère que ce petit exemple pourra t'aider...

# Re: Modification variable à partir window.opendialog

Envoyé par : cokinou

Date : 31/01/2007 13:28

Sinon, il y a une autre méthode un peu moins fine :-) C'est de passer ton objet window en paramètre de ton openDialog().... comme ca tu peux en faire ce que tu veux dans ta fenetre de dialog.

Exemple :

Dans ton fichier principal :

 openDialog("http://example.com/test.xul", "test", "modal", window);

Dans ta fenetre de dialogue :

 var winOpener = window.arguments[0];
 winOpener.document.t_Lignes[numligne].value = newligne;

# Re: Modification variable à partir window.opendialog

Envoyé par : jeremie

Date : 01/02/2007 08:39

Voila j'ai trouvé comment faire. C'est pas très propre mais ca marche.

Fenetre principale :

  wndow.openDialog('chrome://pecoto/content/correction.xul','Correction','chrome,modal,width=600,height=600,centerscreen',"+i+",'"+ligne+"',"+j+",'"+ligneErreur+"');

popup :

window.opener.document.getElementById("texte_recup").innerHTML =  newligne;

Ensuite je renvoi newLigne dans la page principale, puis je met <html: pre en hidden

Voila

Merci Raphael et cokinou et les autres

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.