Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Executer une action hors d'une extension

Envoyé par : Utilisateur anonyme

Date : 21/04/2006 01:45

Bonjour

Est-il possible d'effectuer une action hors d'une extension ?

Par exemple, je veux créer une page window et y insérer un bouton permettant d'ouvrir le panneau latéral des marques-pages.

Cela se fait par une fonction dans le fichier browser.js Ce fichier n'est pas accessible depuis mon extension.

La solution de travailler en overlay de browser.xul ne fonctionne pas. Dans ce cas, je peux bien appeller la fonction pour ouvrir les marques-pages, mais je ne peux plus rien afficher dans ma page puisque je ne suis plus dans une fenetre window.

Ce que je voudrais, c'est créer une page xul contenant une fenetre window, l'ouvrir en tapant "chrome://..../page.xul" dans l'url de firefox, et que cette fenetre contienne un bouton permettant d'ouvrir le panneau des marques-pages.

Est-ce possible ? Comment faire ?

Merci de m'aider.

# Re: Executer une action hors d'une extension

Envoyé par : laurentj

Date : 21/04/2006 10:04

c'est un peu obscure ton explication. Ta page "window", elle se trouve où ? Elle s'affiche par qui, quoi comment ?

# Re: Executer une action hors d'une extension

Envoyé par : Utilisateur anonyme

Date : 21/04/2006 20:04

En fait, je voudrais ceci:

J'ai une page window dont je charger le chrome en tapant son adresse dans le champ d'url de firefox.

Je voudrais acceder à un élement de la page browser.xul de Firefox. Mais la commande suivante ne fonctionne pas:

var main = document.getElementById('main-window');

puisque l'identifiant 'main-window' n'est pas dans le document. Est-il possible d'accéder à un autre document ?

# Re: Executer une action hors d'une extension

Envoyé par : Vilya

Date : 21/04/2006 23:14

J'ai eu le même problème pendant un moment. Je m'en suis sortie avec un

window.content.document.[...]

Ca fonctionne mais je ne suis pas certaine que ce soit la solution la plus propre :)

Edit|En fait après re-re-relecture ce n'est peut être pas tout à fait la réponse à ta question, mais essaye quand même ^^

# Re: Executer une action hors d'une extension

Envoyé par : Utilisateur anonyme

Date : 22/04/2006 03:15

Ca ne fonctionne toujours pas.

Si je place une page htm dans mon chrome, et que je l'ouvre dans mon navigateur, je peux enrichir ma page htm de javascript possédant tout les droits suffisants pour utiliser les XPCOM.

J'aimerais effectuer une action de la page browser.xul de firefox. Ces actions ne sont disponibles que depuis un overlay de cette page. Mais si je charge un overlay, je ne peux pas y insérer une page htm à afficher.

Est-il donc possible d'écrire une fonction javascript pour qu'une page htm chargé via le chrome en tapant son adresse dans la barre d'url de Firefox puisse effecteur des actions tel que ouvrir le menu des marques-pages ?

On pourrait par exemple simuler un raccourci-clavier, mais comment faire ?

L'idéal serait de pouvoir récuperer l'objet dom (même en lecture seule) de l'élement <window id="main-window" />

J'ai essayé avec parent.document et content.document mais sans succès.

Je finis par penser que ce n'est pas possible.

Une facon de faire pourrait etre de créer une page overlay qui le fasse, mais que la page overlay ne soit pas chargé par défaut, mais soit chargé en javascript quand on l'appelle.

Je n'ai pas réussi à me servir de la commande loadOverlay, mais il semble qu'elle ne permettre que de charger un overlay sur la page courante, et pas de charger un overlay sur la page décrit dans le chrome.manifest.

Est-ce faisable ?

# Re: Executer une action hors d'une extension

Envoyé par : Utilisateur anonyme

Date : 22/04/2006 03:50

VICTOIRE !!!

Voici comment j'ai réussi. J'utilise l'interface XPCOM nsIWindowMediator

Par exemple, si je veux que ma page htm chargée en chrome ouvre le panneaux de marques-pages; il me suffit d'appeller la fonction suivante:

function MarquesPages () {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
var browserWindow = wm.getMostRecentWindow("navigator:browser");
browserWindow.toggleSidebar('viewBookmarksSidebar');
}

browserWindow contient le dom la page browser.xul.

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.