Création d'une extension "mozTarget"

Vous vous penchez sur le développement d'applications ou d'extensions pour Mozilla ? C'est alors vers ce forum que se dirigeront naturellement vos requêtes...
jlinho

Création d'une extension "mozTarget"

Message 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
jlinho

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

Message 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
jlinho

Message 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
Pastisman
Tyrannosaurus Rex
Messages : 2137
Inscription : 27 juin 2008, 15:18

Message 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
Ma devise : Etre convaincu (en 3 mots)
Mes extensions
jlinho
Arias
Messages : 2
Inscription : 29 janv. 2009, 09:00

Message 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 !
chBok
Iguane
Messages : 991
Inscription : 17 oct. 2003, 19:17

Message par chBok »

Outre les informations sur le site que tu évoques, tu trouveras également des informations plus techniques sur xulfr.org.
Pastisman
Tyrannosaurus Rex
Messages : 2137
Inscription : 27 juin 2008, 15:18

Message 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
Ma devise : Etre convaincu (en 3 mots)
Mes extensions
jlinho
Arias
Messages : 2
Inscription : 29 janv. 2009, 09:00

Message 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
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 6 invités