Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

Aller à la page :  1 2

# Afficher/cacher hbox et hauteur Iframe

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>

# Re: Afficher/cacher hbox et hauteur Iframe

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 ;)

# Re: Afficher/cacher hbox et hauteur Iframe

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

# Re: Afficher/cacher hbox et hauteur Iframe

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.

# Re: Afficher/cacher hbox et hauteur Iframe

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

# Re: Afficher/cacher hbox et hauteur Iframe

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>

# Re: Afficher/cacher hbox et hauteur Iframe

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.

# Re: Afficher/cacher hbox et hauteur Iframe

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 ;)

# Re: Afficher/cacher hbox et hauteur Iframe

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

# Re: Afficher/cacher hbox et hauteur Iframe

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 ?

# Re: Afficher/cacher hbox et hauteur Iframe

Envoyé par : Zmx

Date : 16/05/2006 11:11

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 ?

# Re: Afficher/cacher hbox et hauteur Iframe

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,(..)

# Re: Afficher/cacher hbox et hauteur Iframe

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,(..)

# Re: Afficher/cacher hbox et hauteur Iframe

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 =)

# Re: Afficher/cacher hbox et hauteur Iframe

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 ;-)

Aller à la page :  1 2

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.