Envoyé par : Polaris68
Date : 29/06/2006 10:43
Tout est dans le titre !!!
Est il possible de contrôler l'affichage des barres d'outils et de menu de Firefox depuis une extension ?
Merci !
Envoyé par : papy
Date : 29/06/2006 10:58
Oui, comme tout élément XUL. Il faut pour cela la récupérer via le DOM (fonction getElementById du document par exemple, ou tout autre fonction qui permet de récupérer un élément XUL) et changer la propriété collapsed à true.
Exemple :
var toolbar = document.getElementById('id_de_la_barre_voulue'); toolbar.collapsed = true;
Normalement ca devrait marcher, mais je ne suis pas (encore) un pro de XUL donc ca reste à voir...
Envoyé par : Polaris68
Date : 29/06/2006 11:34
Cela ne fonctionne pas, à moins que je ne m'y prenne mal:
Voici ce que je cherche à faire: Firefox est LE navigateur par défaut sur tous les postes de travail. Je souhaite au travers d'une extension, restreindre l'accès à certaines fonctionnalités du navigateur lorsque l'utilisateur est connecté à certaines url précises.
Je me suis basé sur l'extension allowrightclick pour réaliser mon extension. L'extension est uniquement composée d'un overlay qui ajoute des listeners au chargement de celui-ci. Voici le code : @@ <?xml version="1.0"?> <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?> <overlay id="allowrightClickOverlay"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:nc="http://home.netscape.com/NC-rdf#" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript"> <![CDATA[
function keyPressed(event){ alert('keypressed'); event.preventDefault(); event.stopPropagation(); alert(event.charCode); alert(event.ctrlKey); }
function mouseClicked(event){ alert('mouseClicked'); alert(event.button); event.preventDefault(); event.stopPropagation(); }
function addListeners() { window._content.addEventListener('keypress', keyPressed, true); window._content.addEventListener('mousedown', mouseClicked, true); alert(document.getElementById('main-menubar')); }
window.addEventListener('load', addListeners, true);
]]> </script>
</overlay> @@
Je rencontre deux problèmes :
Envoyé par : papy
Date : 29/06/2006 11:40
Effectivement le code que j'ai mentionné plus haut ne peux pas fonctionner vu que les composants de firefox ne sont pas dans le contexte du document... désolé
Envoyé par : papy
Date : 29/06/2006 12:20
Après un test j'ai réussi à masquer la barre de menu de firefox, mais de manière non dynamique. La procédure que j'ai suivi :
<?xml version="1.0"?> <overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <box id="main-menubar" collapsed="true"/> </overlay>
overlay chrome://browser/content/browser.xul chrome://monExtension/content/overlay.xul
Au démarrage du naviguateur, la barre de menu n'apparait plus. Tu dois pouvoir cacher tout les composants que tu souhaite supprimer (notamment le panel extensions a mon avis, sinon tes utilisateurs pourront désactiver l'extension est ainsi récupéré leurs menus etc...)
Cela doit certainement être faisable dynamiquement comme je l'indiquais plus haut, il faut juste trouver la bonne méthode pour récupérer les composants du naviguateur.
Envoyé par : Polaris68
Date : 29/06/2006 12:24
papy a écrit:
Effectivement le code que j'ai mentionné plus haut
ne peux pas fonctionner vu que les composants de
firefox ne sont pas dans le contexte du
document... désolé
J'ai essayé avec le window.parent mais sans plus de succès
Envoyé par : Polaris68
Date : 29/06/2006 12:59
Par contre ce qui est vraiment bizzare c'est que lorsque je fais un window.document.location il me retourne l'url chrome du browser (browser.xul) Comment faire dans ce cas pour récupérer l'URL du document affiché dans le navigateur ?
Envoyé par : thefab
Date : 29/06/2006 13:26
window.document.location il me retourne l'url chrome du browser (browser.xul)
Sauf erreur c'est
window.content.location
content étant un raccourci pour l'élément browser (iframe, editor ?) qui a l'attribut type="content-primary"
Envoyé par : Polaris68
Date : 29/06/2006 15:47
Ca y est tout fonctionne parfaitement !!!
L'utilisateur peut surfer librement, et dès que celui-ci se connecte à l'application, les barres de menu sont masquées et les raccourcis clavier/click droit sont désactivés !
Pour info, le problème de récupération des barres de menu provenait du fait que j'ouvrais le fichier xul directement dans FF sans passer par l'installation de l'extension (rookie error).
window.document.getElementById('navigator-toolbox').setAttribute('hidden', true)
permet de masquer les barres de menu de firefox.
Maitenant il ne me reste plus qu'à rendre tout ca un peu plus configurable
Envoyé par : papy
Date : 29/06/2006 16:17
Hum, quelle version de FF utilise tu ? J'ai essayé de faire un alert de window.document.getElementById('navigator-toolbox') depuis mon extension pour tester, mais il me dit null.
Je pourrais bien être interessé par la modification dynamique de l'interface du browser, et même si ce n'est pas le cas j'aimerais bien savoir pourquoi chez moi ca ne fonctionne pas et chez toi si...
Envoyé par : Polaris68
Date : 29/06/2006 16:59
...La classe on l'a ou on l'a pas ;-) (je plaisante bien entendu) J'utilise la dernière version de firefox.
Je fais juste un peu de ménage dans mon code et je posterai le xpi sur le forum
Envoyé par : papy
Date : 29/06/2006 17:17
Lol ;)
C'est sympa de ta part parce que ca m'intrigue un peu. Bonne continuation
Envoyé par : mat
Date : 25/07/2006 11:17
Je me permets d'apporter ma contribution, surtout pour papy, puisque je ne sais pas s'il a trouvé une solution... Voila donc les sources qui m'ont permis de masquer toutes les barres de firefox:
chrome.manifest:
content monExtension content/ locale monExtension fr_FR locale/fr_FR/ overlay chrome://browser/content/browser.xul chrome://monExtension /content/overlay.xul
overlay.xul
<?xml version="1.0"?> <overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <box id="navigator-toolbox" hidden="true"/> </overlay>
En espérant que cela en aidera d'autres... Le plus périlleux, dans cette histoire, c'est de récupérer les id des barres en question (pas le courage de parcourir le code de firefox... ce serait formateur, pourtant, à mon avis;))
Eh oui, c'est ça la classe...
Mat
Envoyé par : chBok
Date : 25/07/2006 11:50
Merci Mat pour ton intervention :) Quelle classe en effet ;) (LOL)
C'est vrai que pour masquer une des barres d'outils "natives" de Firefox, et plus généralement de tous autres éléments de l'interface du navigateur, rien de tel que de passer par un overlay.
Envoyé par : thefab
Date : 25/07/2006 13:49
récupérer les id des barres en question
Et l'Inspecteur DOM il sert à quoi alors !
Pour afficher le navigateur, entrez:
chrome://browser/content/browser.xul
puis examiner... héhé ;-)
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.