Page 1 sur 1

Création d'une extension "mozTarget"

Publié : 27 janv. 2009, 10:57
par jlinho
Bonjour,

je souhaiterai créé une extension "mozTarget" dont le but serait de pouvoir contrôler l'ouverture d'une URL cliquée en fonction d'un paramètre "mozTarget" dans l'URL. Ainsi l'URL est ouverte dans:
- une nouvelle fenêtre pour l'URL: http://xxxxxx?mozTarget=newwindow
- un nouvel onglet pour l'URL: http://xxxxxx?mozTarget=newtab
- l'onglet ou la fenêtre courante pour l'URL http://xxxxx?mozTarget=current
- ou encore le panneau latéral pour l'URL http://xxxxx?mozTarget=sidepane


Est-ce possible par une extension Firefox ?
J'ai réussi à obtenir le comportement escompté (sauf panneau latéral) en modifiant la fonction javascript openURI du fichier browser.js . Ce fichier se trouve dans le dossier Firefox/chrome/browser.jar.

les lignes modifiées ont été (vers la ligne 3950).(Modifications encadrées par ===================):

Code : Tout sélectionner

var location;
    if (aWhere == Ci.nsIBrowserDOMWindow.OPEN_DEFAULTWINDOW) {
      switch (aContext) {
        case Ci.nsIBrowserDOMWindow.OPEN_EXTERNAL :
          aWhere = gPrefService.getIntPref("browser.link.open_external");
          break;
        default : // OPEN_NEW or an illegal value
          aWhere = gPrefService.getIntPref("browser.link.open_newwindow");
      }
    }

	//=============ajout ici===================
	if (isExternal) {
                if (aURI.spec.match("mozTarget=current")) 
		        aWhere = 1; //Ouvrir dans nouvelle fenêtre
                else if (aURI.spec.match("mozTarget=newwindow")) 
                        aWhere = 2;
                else if (aURI.spec.match("mozTarget=newtab")) 
                        aWhere = 3;
                    
	}
        //=================fin ajout==============
	
	
    switch(aWhere) {
      case Ci.nsIBrowserDOMWindow.OPEN_NEWWINDOW :
        
Merci d'avance pour votre aide !

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5

Re: Création d'une extension "mozTarget"

Publié : 27 janv. 2009, 10:59
par jlinho
désolé pour les fautes d'orthographe: je souhaiterais créer

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5

Publié : 28 janv. 2009, 15:55
par jlinho
Pas une seule réponse ?


Ma question était simplement "est-ce réalisable ?"

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

Publié : 28 janv. 2009, 16:23
par Pastisman
Bonjour,

Bah oui, c'est réalisable, un overlay sur browser qui redéfini openURL comme tu l'as fait.

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5

Publié : 29 janv. 2009, 09:16
par jlinho
Pastisman a écrit :Bonjour,

Bah oui, c'est réalisable, un overlay sur browser qui redéfini openURL comme tu l'as fait.

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5
Merci pour ta réponse !

A vrai dire je ne connais encore pas du tout le développement d'extensions. Je viens de lire le tutorial https://developer.mozilla.org/fr/Constr ... _extension qui décrit la création d'un overlay XUL sur browser.xul .

Questions:
1) Si je comprends bien ta phrase moi je dois créer un overlay JS sur browser.js. C'est ça non ?

2) Pourrais tu m'indiquer un bon lien pour que je puisse me lancer STP ? Un truc pour que je puisse continuer rapidement...

3) Quand tu dis redéfinir tu parles d'héritage au sens langage objet j'imagine ?

Merci d'avance pour ton aide !

Publié : 29 janv. 2009, 09:48
par chBok
Outre les informations sur le site que tu évoques, tu trouveras également des informations plus techniques sur xulfr.org.

Publié : 29 janv. 2009, 13:11
par Pastisman
jlinho a écrit : Merci pour ta réponse !
De rien
jlinho a écrit : A vrai dire je ne connais encore pas du tout le développement d'extensions. Je viens de lire le tutorial https://developer.mozilla.org/fr/Constr ... _extension qui décrit la création d'un overlay XUL sur browser.xul .
C'est un très bon début. J'ai moi aussi commencé par là, puis en décortiquant quelques extensions qui touchaient a peu près aux choses que je voulais modifier, j'ai appris peu à peu. Je ne suis pas du tout un spécialiste de XUL et js mais en faisant des copier-coller et en tatonnant pas mal on arrive à s'en sortir.
jlinho a écrit : 1) Si je comprends bien ta phrase moi je dois créer un overlay JS sur browser.js. C'est ça non ?
Les overlays se font toujours sur un fichier XUL dans lequel tu ajoutes/modifies des choses.

jlinho a écrit : 2) Pourrais tu m'indiquer un bon lien pour que je puisse me lancer STP ? Un truc pour que je puisse continuer rapidement...
Tu as déjà trouvé le site de base, si tu lis tout ce qui se rapporte aux extensions sur MDC, tu auras déjà de quoi faire.
Tu peux aussi comme moi t'inspirer d'extensions existantes comme par exemple dans ton cas https://addons.mozilla.org/fr/firefox/addon/1047 (j'ai cherché rapidement, il y en a surement d'autres).
jlinho a écrit : 3) Quand tu dis redéfinir tu parles d'héritage au sens langage objet j'imagine ?
Non, je ne sais plus comment ça marche avec les fonctions js dans les extensions, si tu peut vraiment les redéfinir (les écraser en fait). Sinon il faut que tu trouves l'évènement lié au chargement d'une URL et que tu rajoutes un eventlistener dessus (regardes comment ils font dans l'extension que je t'ai trouvé).

Amuses toi bien !

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.2; fr; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5

Publié : 29 janv. 2009, 20:48
par jlinho
Bon alors finalement, le + simple était de spécialisé "openURI" dans le plugin. J'ai fini par réussir à écrire ma première extension !

Merci beaucoup à toi pastisman...

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3