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>
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.
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 :
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>
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
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
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
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
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.