Initialiser event dans Firefox

Résolu/Fermé
Kopros Messages postés 597 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - Modifié par Kopros le 20/01/2015 à 19:34
Kopros Messages postés 597 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - 20 janv. 2015 à 19:38
Salut à tous !

Je suis en train de faire un système d'onglets pour un projet perso.
On peut ouvrir beaucoup d'onglets, je ne connais pas d'avance le nombre.

Du coup pour savoir si on clique sur un onglet, au lieu de faire du jquery dans ce genre :
$('.onglet').click(function(event){...});

et bien j'ai utilisé l'attribut onclick qui appelle une fonction, comme ça :
<a href="#" onclick="change_tab(this.id, true)" class="onglet" id="onglet_1">texte</a>

Le truc c'est que je veux pas que le lien fonctionne, puisque le js le gère.
Je veux également savoir si on fait un click molette, pour fermer l'onglet.

Voici ma fonction:
function change_tab(id, closable) {
    event.preventDefault(event);
    // Click molette
    if(typeof(event)!='undefined'&&event.which==2&&typeof(closable)!='undefined'&&closable){
        close_tab(id);
        return false;
    }
    if (id!=active_tab_id) {
        // ... changement d'onglet
    }
    return false;
}


Sous Chrome, pas de soucis la fonction marche bien, tant pour le changement d'onglets que pour la fermeture par click molette.
Par contre Firefox me dit que event n'est pas initialisé et par conséquent il réagit comme un lien normal, sans rien exécuter de ma fonction.

Comment faire pour qu'il comprenne event ??


EDIT


Bon bah j'ai fait différemment qu'avec onclick (on dirait que c'est pas possible avec la cette syntaxe) et du coup j'ai utilisé addEventLister, voici la ligne qui fait ça :
document.getElementById('tab_'+pid).addEventListener('click', function(event){change_tab(this.id, true, event);}, false);


Et dans ma fonction change_tab je teste event (qui lui est donc passé en paramètre) :
if(typeof(event)!='undefined'){alert(event.which);event.preventDefault();}


Une fois de plus sous Chrome pas de soucis, par contre sous FF il fait bien l'alert quand je fais un clic gauche, mais rien du tout avec le clic molette. C'est comme si Firefox n'interprétait pas le clic molette comme un click avec addEventListener !

Que faire pour qu'il arrête de me casser les... enfin qu'il fasse comme Chrome quoi ^^ ?

EDIT (encore, parce que j'adore parler tout seul !)

Il faut mettre "mousedown" et pas "click". Problème résolu.

A voir également:

1 réponse

Kopros Messages postés 597 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
20 janv. 2015 à 19:38
Je crois qu'il faut poster un message pour que le topic puisse être passé en résolu.
Donc c'est pas pour me répéter, mais voici la ligne de code qui marche partout :
document.getElementById('tab_'+pid).addEventListener('mousedown', function(event){change_tab(this.id, true, event);}, false);
0