Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Passage de variables avec DOM

Envoyé par : Utilisateur anonyme

Date : 05/11/2005 12:20

Bonjour

je test le passage de variable entre 2 fenetres XUL sous DOM et cela ne semble pas fonctionner avec firefox 1.5

Une premiere fenetre main.xul ouvre une fenetre popup

à partir de cette fenetre popup, je récupère bien le titre de la fenetre appelante, par contre je n'accède pas aux élements de cette fenètre ni aux fonctions d'ailleurs.

Je dois faire une erreur monumentale.



premier fenetre main.xul

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<window title="Titre de main.xul" width="800" height="600"   xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script language="JavaScript" type="text/JavaScript">
function popup(fic)
// on ouvre dans une fenêtre le fichier passé en paramètre.
{ var  wchoix=window.open(fic,'Choisir','width=400,height=250,top=50,left=50');  }
function testChamp()
{
 var d=document.getElementById("w_contenu").value;
 alert(d);
}
</script>
<groupbox flex="1">
	<caption label="Passage de variable en test" />
	<vbox>
		<hbox align="center">
			<label style="width:6em;"  value="Code:" />
			<textbox id="w_contenu" size="10"  value="blabla" multiline="false"/>
		</hbox>
                       <hbox align="center">
			<button id="bt1" size="10" label="popup"  oncommand="popup('popup.xul');"/>
		</hbox>
		<hbox align="center">
			<button id="bt2" size="10" label="test du contenu du champ"  onclick="testChamp();"/>
		</hbox>
	</vbox>
</groupbox>
</window>

Fenetre popup.xul

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<window title="Popup" width="800" height="600" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script language="javascript" type="text/javascript">
function test(){
 alert( window.opener.document.title);
 alert( window.opener.document.getElementById("w_contenu").value); // me retourne undefined
 alert( window.opener.testChamp());//erreur javascript window.opener.testchamp n'est pas une focntion
 self.close();
}
</script>
<groupbox flex="1">
	<caption label="Passage de variable" />
	<vbox>
        		<hbox align="center">
			<button id="bt1" size="10" label="test"  onclick="test();"/>
		</hbox>
	</vbox>
</groupbox>
</window>

# Re: Passage de variables avec DOM

Envoyé par : laurentj

Date : 07/11/2005 16:20

on dirait qu'il y a un bug dans FF car ça me semble correct tout ça.

# Re: Passage de variables avec DOM

Envoyé par : Utilisateur anonyme

Date : 07/11/2005 21:22

Cela ne fonctionne pas dans le cas d'URL chrome, pour des url File:/// cela fonctionne.

L'objet window.opener est de type XPCNativeWraper.

L'acces aux propriétés est finalement possible par les fonctions du Dom getAttribute et setAttribute.

Par contre toujours pas de piste pour invoquer une methode de la fenetre appelante.

Rappel :

  • window.opener.document.getElementById("w_contenu").value = "toto" ne fonctionne pas avec Firefox 1.5
  • window.opener.document.getElementById("w_contenu").getAttribute("value") par contre fonctionne de même que window.opener.document.getElementById("w_contenu").setAttribute("value","toto").
  • windows.opener.testChamp() retourne une erreur javascript : window.opener.testChamp is not a function

# Re: Passage de variables avec DOM

Envoyé par : thefab

Date : 07/11/2005 21:41

Salut,

Chez moi ça fonctionne avec Firefox 1.5. J'ai changé 2-3 trucs (encoding ISO-8859-1, remplacé onclick par oncommand et script type="application/x-javascript" et "chrome" comme paramètre pour open) mais je ne crois pas que ça soit grâce à ça que ça fonctionne...

principale.xul

<?xml version="1.0" encoding="ISO-8859-1"?>

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window title="Principale" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript">
function ouvrir()
  {
  window.open("deuxieme.xul", "deuxieme", "chrome");
  }
function test()
  {
  return document.getElementById("texte").value;
  }
</script>

<textbox id="texte"/>
<button label="Ouvrir" oncommand="ouvrir();"/>

</window>

deuxieme.xul

<?xml version="1.0" encoding="ISO-8859-1"?>

<?xml-stylesheet href="chrome://global/skin" type="text/css"?>

<window title="Deuxième" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript">
function test()
  {
  alert(window.opener.document.title);
  alert(window.opener.document.getElementById("texte").value);
  alert(window.opener.test());
  self.close();
  }
</script>

<button label="Test" oncommand="test();"/>

</window>

# Re: Passage de variables avec DOM

Envoyé par : Utilisateur anonyme

Date : 07/11/2005 22:35

Cela m'étonne, est-ce bien avec un appel par une URL chrome ?

car j'ai le même comportement de mon coté.

window.opener.document.title ->principal

window.opener.document.getElementById("texte").value -> undefined

et ensuite le traitement est interrompu, dans la console javascript:

window.opener.test is not a function
chrome://xulAppli/content/deuxieme.xul ligne11

# Re: Passage de variables avec DOM

Envoyé par : thefab

Date : 07/11/2005 22:52

Salut micro,

Oui il s'agit bien d'un appel par chrome (Firefox 1.5 RC 1 sous Windows 2000). J'ai beau chercher je ne vois pas ou ça coince...

Courage

# Re: Passage de variables avec DOM

Envoyé par : thefab

Date : 07/11/2005 23:00

J'ai trouvé... ah tu veux la soluce ?

Alors effectivement j'ai le même comportement que toi (la piste du bug dans FF semble se confirmer...) lorsque l'extension est lancée depuis le navigateur. Par contre ça fonctionne correctement lorsque elle est démarrée seule:

firefox.exe -chrome chrome://extension/content/principale.xul

Fabrice

# Re: Passage de variables avec DOM

Envoyé par : Utilisateur anonyme

Date : 08/11/2005 09:01

Merci Fabrice, effectivement, cela fonctionne en solo.

bizarre, bizarre.

Au moins, je peux continuer dans cette voie, je commencais à douter du choix de xul pour un projet important.

Maintenant, est-ce un bug ou un verrouillage des XPCNativeWrapper dans un contexte Web ?

c'est qd même une bonne nouvelle, la journée commence bien ;-)

Michel

# Re: Passage de variables avec DOM

Envoyé par : laurentj

Date : 08/11/2005 12:44

Pour XPCNativeWrapper, voir la page sur le wiki : /wiki/XPCNativeWrapper . Il y a peut-être la réponse au problème (désolé, pas le temps de me pencher plus sur le problème)

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.