Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Cadre flottant sur navigateur

Envoyé par : chBok

Date : 26/09/2006 16:06

Je cherche une solution technique et élégante à la question suivante : Comment obtenir en overlay un cadre flottant, hébergeant un contenu XUL, s'affichant au dessus de la page du navigateur en cours (page HTML par ex) ET indépendant de l'onglet sélectionné.

L'indépendance de la page 'document' est le plus dur à gérer. Ce cadre flottant verrait bien sa place par exemple à l'intérieur d'un <stack>, mais a-t-on le droit de modifier le noeud DOM vbox gérant les <tabpanels> des onglets de navigation ?

# Re: Cadre flottant sur navigateur

Envoyé par : Paul Rouget

Date : 27/09/2006 01:11

Il peut etre simplement fils du <window/> de firefox (chrome://browser/content) et flotter au dessus de toute l'interface de Firefox, non ? À toi de faire en sorte qu'il ne sorte pas du <tabpanels/>.

# Re: Cadre flottant sur navigateur

Envoyé par : chBok

Date : 27/09/2006 11:28

oui, j'y ai pensé, mais comment du fait flotter un élément XUL comme une <box> au dessus de l'interface, sans passer par le système de pile <stack> comme je le citais ?

A moins d'avoir mal cherché dans les styles CSS applicables aux éléments XUL, je ne vois pas trop.

Je tenterai en XBL et overlay d'insérer une <stack> englobant le noeud des <tabpanels>... Je sens que ca va être sport :-)

# Re: Cadre flottant sur navigateur

Envoyé par : Paul Rouget

Date : 28/09/2006 07:32

embarque ton xul dans un élément <div/> floattant.

# Re: Cadre flottant sur navigateur

Envoyé par : chBok

Date : 28/09/2006 11:11

oui, et je place ce <div> sur quel noeud DOM ? Il doit être indépendant de la page en cours, donc attaché à l'interface elle même de Firefox.

Pas simple mon affaire.

# Re: Cadre flottant sur navigateur

Envoyé par : papy

Date : 03/10/2006 15:31

La solution utilisant les stacks n'est pas 'viable'. En effet les composants qui possèdent des vues spéciales (tree, iframe, deck...) s'affichent au même niveau que la stack... (cf http://xulfr.org/forums/read.php?1,5693, http://xulfr.org/forums/read.php?1,5544 et http://xulfr.org/forums/read.php?1,5608)

Enfin je ne retrouve toujours pas la page qui indique cette limitation donc ca reste a voir, et si il existe une solution elle m'intéresse beaucoup.

# Re: Cadre flottant sur navigateur

Envoyé par : Paul Rouget

Date : 04/10/2006 11:02

L'extension de google pour son notebook fait exactement ce que tu décris. Jetes un coup d'oeil au code.

Mais sinon je ne vois pas trop la difficulté de mettre un div dans la <window> de Firefox et de gérer sa visibilité en fonction de la page en cours.

# Re: Cadre flottant sur navigateur

Envoyé par : chBok

Date : 04/10/2006 11:42

ok merci, je vais y jeter un oeil.

# Re: Cadre flottant sur navigateur

Envoyé par : papy

Date : 04/10/2006 12:55

La solution utilisant la balise div fonctionne parfaitement, il suffit de mettre le code suivant en tant que style CSS (en remplacant les coordonnées bien évidemment)

position: fixed;
left: 123px;
top: 321px;

Après tu dois facilement pouvoir ajouter cette balise quelque part dans la fenêtre principale de firefox via un overlay et la contrôler a ta guise.

# Re: Cadre flottant sur navigateur

Envoyé par : TrucEmpty

Date : 04/10/2006 17:57

Bonjour,

Est-il possible d'avoir une réponse plus détaillée ???

Merci d'avance, :)

# Re: Cadre flottant sur navigateur

Envoyé par : chBok

Date : 04/10/2006 18:34

TrucEmpty a écrit:

Bonjour,

Est-il possible d'avoir une réponse plus détaillée
???

Merci d'avance,
:)

Sans aucun problème. Dès que j'ai résolu l'affaire dans le détail, je vous en ferai part, avec un petit exemple à la clef :-)

# Re: Cadre flottant sur navigateur

Envoyé par : chBok

Date : 04/10/2006 22:49

J'ai avancé un peu. En fait, j'avais déjà travaillé sur le sujet, et j'utilisais en effet des éléments XUL avec un style position:fixed.

Mon problème, est que mon cadre était parfois masqué par les données d'une page Web qui se chargeait ensuite. Mais j'ai trouvé une solution pas évidente (et grâce au companion joga) :

__L'overlay__
<window id="main-window">
 <vbox id="test_cadre" style="right: 0px; bottom: 0px; position: fixed; border: 1px solid grey;" hidden="false">
   <label value="texte" />
   <button label="test" />
 </vbox>
</window>

Le script place un scrutateur sur un changement d'onglet. Ici, j'utilise l'événement particulier pageshow pour mes besoins :

window.getBrowser().addEventListener("pageshow", function(e){cadre(e); }, false);

cadre = function(e) {
 var cd = document.getElementById('test_cadre');
 var ncd = cd.cloneNode(true);
 var windowElt = document.getElementById("main-window");
 windowElt.removeChild(cd);
 windowElt.appendChild(ncd);
}

L'"astuce" revient à copier le nœud DOM du cadre, de l'enlever de l'arbre DOM, et de le remettre. De ce fait, il apparait toujours au dessus de tous les éléments affichés à l'écran.

C'est sioux.

# Re: Cadre flottant sur navigateur

Envoyé par : laurentj

Date : 05/10/2006 12:51

chbox: et en mettant simple un style z-index:1000; par exemple sur ta div ?

# Re: Cadre flottant sur navigateur

Envoyé par : chBok

Date : 05/10/2006 17:02

laurentj > non, j'avais essayé ca aussi. L'extension JOGA procède bien de cette façon. J'ai tenté de regarder dans le code de google notebook, mais google a compacté tout le code javascript en le rendant difficle à lire.

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.