Envoyé par : Sergio
Date : 15/05/2006 16:54
Bonjour,
Je débute en XML... et j'ai deux petits soucis avec le code ci-dessous. (j'ai Firefox 1.5.0.3)
J'ai deux hbox dont j'active le premier au chargement de la page : là tout va bien. Lorsque je clique sur le bouton de ce premier hbox pour le cacher et afficher le deuxième, le deuxième hbox apparaît bien mais le premier reste visible. Pourquoi ? Qu'est-ce que j'oublie ?
Surtout que lorsqu'on re-clique sur le bouton qui aurait dû disparaître la première fois, là il disparaît... enfin !
Question annexe : que faut-il préciser pour que l'iframe prenne toute la hauteur de la fenêtre ?
Merci d'éclairer ma lanterne.
<?xml version="1.0" encoding="ISO-8859-15"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css" ?> <window id = "idFenetre" title = "Test" xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload = "init();" > <script type="application/x-javascript"> function init() { voir("f0"); } function action_sur(id) { switch (id) { case "f0_ok" : cacher("f0"); voir("f1"); break; } } function voir(id) { document.getElementById(id).setAttribute("hidden", "false"); } function cacher(id) { document.getElementById(id).setAttribute("hidden", "true"); } </script> <hbox id="f0" hidden="true"> <vbox style="background-color:#FFFFE0;"><description>Écran 0</description> <button label="Afficher écran 1" id="f0_ok" onclick="action_sur(this.id);" /> </vbox> </hbox> <hbox id="f1" hidden="true" style="height:100%;"> <description>Écran 1</description> <tabbox id="f2_onglets" flex="1"> <tabs> <tab label="Iframe" /> </tabs> <tabpanels> <tabpanel id="f2_1" > <iframe flex="1" src="http://www.google.fr" /> </tabpanel> </tabpanels> </tabbox> </hbox> </window>
Envoyé par : chBok
Date : 15/05/2006 18:16
Je crois que pour cacher, tu fais bien le document.getElementById(id).setAttribute("hidden", "true");, mais pour le rendre visible ensuite, il faut supprimer l'attribut plutôt que de le mettre à false, soit :
document.getElementById(id).removeAttribute("hidden");
A tester donc ;)
Envoyé par : thefab
Date : 16/05/2006 07:36
Salut,
Sans mettre d'attribut hidden sur f0 et en n'appellant pas voir() dans init() ça à l'air de fonctionner !!?
function init() { //voir("f0"); } function voir(id) { //document.getElementById(id).setAttribute("hidden", "false"); document.getElementById(id).removeAttribute("hidden"); }
Supprimer l'attribut hidden
<hbox id="f0">
(pour spécifier la hauteur des éléments utilise flex à la place de style="height: 100%")
Fabrice
Envoyé par : Sergio
Date : 16/05/2006 10:11
Merci de ta réponse.
Effectivement ça a l'air de marcher.
Auparavant j'avais aussi essayé :
document.getElementById(id).hidden = false; quand l'attribut hidden="true" était présent dans le tag <hbox>
puis :
document.getElementById(id).setAttribute("hidden", "false");
et c'est donc :
document.getElementById(id).removeAttribute("hidden");
qui fonctionne.
Trois possibilités apparamment pour faire la même chose ?
Il y aurait besoin de clarification... D'autant que n'importe laquelle des 3 semble fonctionner si on utilise tout autre chose qu'un iframe (hormis aussi <browser>) dans le deuxième hbox.
Envoyé par : Sergio
Date : 16/05/2006 10:24
Merci thefab de ta réponse qui complète celle de chBok
J'ai suivi tes conseils et cela fonctionne.
Mais je reste perplexe... Il semble qu'il y ait néanmoins des 'effets de bord' bizarres lorsqu'on utilise un <iframe>.
Pour ma deuxième question, j'avais déjà essayé flex="1" au lieu de style="height: 100%" mais cela ne fonctionne pas d'avantage...
Je n'arrive pas à faire remplir la totalité de ma fenêtre par l'iframe.
Si tu as d'autres idées que je pourrais explorer, n'hésite pas !
En tout cas merci pour la première solution, ça me débloque déjà pas mal.
Sergio
thefab a écrit:
Salut,
Sans mettre d'attribut hidden sur f0 et en
n'appellant pas voir() dans init() ça à l'air de
fonctionner !!?
function init()
{
//voir("f0");
}
function voir(id)
{
//document.getElementById(id).setAttribute("hidden
", "false");
document.getElementById(id).removeAttribute("hidde
n");
}
Supprimer l'attribut hidden
<hbox id="f0">
(pour spécifier la hauteur des éléments utilise
flex à la place de style="height: 100%")
Fabrice
Envoyé par : Zmx
Date : 16/05/2006 10:48
<hbox id="f1" hidden="true" flex="1"> <description>Écran 1</description> <tabbox id="f2_onglets" flex="1"> <tabs> <tab label="Iframe" /> </tabs> <tabpanels flex="1"> <== le flex (pour que le panel soit lui aussi flexer) <tabpanel id="f2_1"> <iframe flex="1" src="http://www.google.fr" /> </tabpanel> </tabpanels> </tabbox>
</hbox>
Envoyé par : Sergio
Date : 16/05/2006 10:49
Finalement je viens de trouver la solution pour faire apparaître le contenu de l'iframe sur la totalité de la fenêtre.
Il faut dans mon cas mettre ni plus ni moins, 4 fois l'attribut flex="1" :
<hbox id="f1" hidden="true" flex="1"> <description>Écran 1</description> <tabbox id="f2_onglets" flex="1"> <tabs> <tab label="Iframe" /> </tabs> <tabpanels flex="1"> <tabpanel id="f2_1" > <iframe flex="1" src="http://www.google.fr" /> </tabpanel> </tabpanels> </tabbox> </hbox>
Si j'essaie d'en supprimer un, l'iframe se limite soit horizontalement, soit verticalement.
Envoyé par : Zmx
Date : 16/05/2006 10:50
Ps: je te conseille l'attribute debug="true" dans ta window pour "voir" ou tu as des soucis de flex ;)
Envoyé par : Sergio
Date : 16/05/2006 10:53
Bonjour Zmx,
Visiblement tu viens de poster en même temps que moi la même solution que celle que je viens de trouver !
Merci à toi.
Sergio
Envoyé par : Sergio
Date : 16/05/2006 11:04
Zmx a écrit:
Ps: je te conseille l'attribute debug="true" dans
ta window pour "voir" ou tu as des soucis de flex
;)
J'ai mis l'attribut debug="true" dans ma window, mais on voit où et quoi en suite ?
Envoyé par : Zmx
Date : 16/05/2006 11:11
Un truc qui ressemble a ça :http://zmx.homeip.net/debug.jpg De memoire :
Tu n'as pas ça avec le debug="true" toi ?
Envoyé par : thefab
Date : 16/05/2006 11:14
Debug ne semble plus fonctionner avec les dernières versions: http://xulfr.org/forums/read.php?7,4161,(..)
Envoyé par : Sergio
Date : 16/05/2006 11:20
Zmx a écrit:
Un truc qui ressemble a ça
:http://zmx.homeip.net/debug.jpg
De memoire :
- les zizzag corresponde au parti "flexible"
- les 2 carré avec un traits au parti "Fixe"
- le rouge au box "orienté" verticalement
- le bleur au box "orienté" horizontalement
Tu n'as pas ça avec le debug="true" toi ?
Ben non.
Comme thefab le signale :
http://xulfr.org/forums/read.php?7,4161,(..)
Envoyé par : Zmx
Date : 16/05/2006 11:23
Oups, désolé pour ce mauvais conseille alors, je vais garder un vieux firefoxx sous la main alors =)
Envoyé par : laurentj
Date : 16/05/2006 11:57
Visiblement Sergio, tu as un peu de mal avec le modèle de boîte. Je te conseille donc de lire le tuto sur le wiki et de jouer avec la boîte de test ;-)
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.