Click Event sur le bouton + des tabs

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...

Modérateur : chBok

eMerzh
Arias
Messages : 3
Inscription : 24 mars 2011, 22:54

Click Event sur le bouton + des tabs

Message par eMerzh » 24 mars 2011, 23:05

Hello,

Je cherche à faire une première extension pour firefox.
Pour commencer simple, je voudrais que lorsque je click milieu sur le bouton + (add tab) de la barre d'outil des tab j'ouvre l'url contenue dans le presse papier.

En m'inspirant d'autre ext, j'arrive à faire ce que je veux en créant un nouveau bouton.
J'arrive aussi à désactiver la création de tab mais c'est partout (menu + bouton + raccourci +...)
en chipotant avec

Code : Tout sélectionner

    gBrowser.removeEventListener("NewTab", BrowserOpenTab, false);

     window.BrowserOpenTab = newtabhomepage.opentab;
ou avec

Code : Tout sélectionner

<commandset id="mainCommandSet">
			<command id="cmd_newNavigatorTab" oncommand="newtabhomepage.opentab(12);"/>
		</commandset>
seulement j'arrive pas à capter l'évènement uniquement sur le + de la barre d'onglet.

kkun à une piste ou pourrait m'aider?

Merci beaucoup

Avatar de l’utilisateur
Pastisman
Tyrannosaurus Rex
Messages : 2137
Inscription : 27 juin 2008, 15:18
Localisation : A côté de la Part-Dieu
Contact :

Re: Click Event sur le bouton + des tabs

Message par Pastisman » 25 mars 2011, 10:05

Bonjour,

Je ne comprends pas tout de ce que tu fais. Pourquoi ne pas laisser le bouton tel qu'il est et simplement ajouter, dans la propriété "oncommand" du bouton un appel à ta fonction derrière :

Code : Tout sélectionner

document.getElementById("new-tab-button").setAttribute("oncommand","BrowserOpenTab();MaFonction(event);");
et dans la fonction tu testes simplement si l'évènement est un clic milieu, si c'est le cas, tu charges la page dont l'adresse est dans le presse-papier dans le dernier onglet ouvert.
Ma devise : Etre convaincu (en 3 mots)
Mes extensions

eMerzh
Arias
Messages : 3
Inscription : 24 mars 2011, 22:54

Re: Click Event sur le bouton + des tabs

Message par eMerzh » 30 mars 2011, 21:55

en faite ça n'a pas l'aire de faire effet...

je me rend compte aussi que mon gBrowser.removeEventListener("NewTab", BrowserOpenTab, false); ne fait pas d'effet , mais la ligne d'après fait tout :)


j'ai aussi tenté le document.getElementById("new-tab-button").setAttribute("oncommand",""); mais la bouton agit tjs normalement....

mais merci bcp pr l'aide :)... une autre idée?

Avatar de l’utilisateur
Pastisman
Tyrannosaurus Rex
Messages : 2137
Inscription : 27 juin 2008, 15:18
Localisation : A côté de la Part-Dieu
Contact :

Re: Click Event sur le bouton + des tabs

Message par Pastisman » 01 avr. 2011, 13:26

Bon, j'ai cherché un peu et en fait le bouton avec l'Id "new-tab-button" n'est pas le bon.
Le bouton "+" pouvant maintenant être déplacé, voir supprimé en personnalisant la barre des onglets, il n'a qu'une classe et pas d'Id.

Le moyen le plus simple et le plus élégant que j'ai trouvé est de surcharger la fonction "checkForMiddleClick" ainsi :

Code : Tout sélectionner

function checkForMiddleClick(node, event) {
  // We should be using the disabled property here instead of the attribute,
  // but some elements that this function is used with don't support it (e.g.
  // menuitem).
  if (node.getAttribute("disabled") == "true")
    return; // Do nothing

  if (event.button == 1) {
    /*ChangeTabButton overlay*/
	if( node.getAttribute("class") == "tabs-newtab-button")
	{
		gBrowser.selectedTab = gBrowser.addTab("http://www.google.com/");
		return;
	}
  /* Execute the node's oncommand or command.
     *
     * XXX: we should use node.oncommand(event) once bug 246720 is fixed.
     */
    var target = node.hasAttribute("oncommand") ? node :
                 node.ownerDocument.getElementById(node.getAttribute("command"));
    var fn = new Function("event", target.getAttribute("oncommand"));
    fn.call(target, event);

    // If the middle-click was on part of a menu, close the menu.
    // (Menus close automatically with left-click but not with middle-click.)
    closeMenus(event.target);
  }
}
si tu veux je me suis empaqueté ça dans une petite extension pour tester, je peux te la mettre sur une dropbox.
Ma devise : Etre convaincu (en 3 mots)
Mes extensions

eMerzh
Arias
Messages : 3
Inscription : 24 mars 2011, 22:54

Re: Click Event sur le bouton + des tabs

Message par eMerzh » 04 avr. 2011, 23:58

Hello, ok ça semble fonctionner comme je veux....

je suis intéressé par ta mini extension pour voir comment surcharger la fonction "proprement" ... j'ai pas fait un long cours sur xul et ffx ...ça se voit :)
enfin sinon je me débrouille :D

Avatar de l’utilisateur
Pastisman
Tyrannosaurus Rex
Messages : 2137
Inscription : 27 juin 2008, 15:18
Localisation : A côté de la Part-Dieu
Contact :

Re: Click Event sur le bouton + des tabs

Message par Pastisman » 05 avr. 2011, 09:29

En fait de surcharger celle-ci, comme la fonction est courte, j'ai simplement repris la fonction de base et ajouté mon code.
Des fois, en cas de fonction plus compliquée dans laquelle on veut changer une large part, il est à mon sens mieux de rappeler la fonction de base dans sa propre fonction :

Code : Tout sélectionner

old_fct = base_fct ;
base_fct = My_fct ;

function My_fct()
{
  if( toto == titi ) old_fct();
  else
  {
  ...
  }
}
La petite extension : http://dl.free.fr/c7MRr6ydB
Ma devise : Etre convaincu (en 3 mots)
Mes extensions

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Bing [Bot] et 2 invités