problème de type d'event

un event non écouté qui fait lever un évent écouté...

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

je crois que j'ai tout dit, j'ai dans le code d'une extension google chrome que je suis en train de coder quelques soucis: je vous poste le code et ce qu'il produit:

le code (l'indentation a été bouffée parce que j'ai pris que les parties utiles de mon code pour faire plus court):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
var fonction = function(){
    alert(event.type);
}

var boucle = function(){
        var n = new Notification("test de notification", {tag: 'notification'});
        n.addEventListener('click',fonction(event),false);
}

window.onload(){
     setInterval(boucle,5000);
}

et ça, ça me fait une notification, toutes les 5 secondes, normal. sauf que la petite fenetre d'alerte n'apparaît pas au clic sur la notification, comme prévu, mais au chargement de la notification (et même le contenu de la petite alerte, c'est "Load").

du coup, je suis un peu désarçonné, et je sais plus trop quoi faire à la place (je vois pas trop quoi taper dans google, vu que tout ce que je tape me renvoie systématiquement sur MDN et la doc de google, qui disent que l'évenement click est un évenement qui fait partie de la classe notification, enfin à ce que j'y comprends…).

du coup, je viens chercher un peu conseil ici, voir si quelqu'un de francophone saurait m'aiguiller( c'est toujours mieux de parler dans sa langue natale quand on parle de trucs trop compliqués :P).

Édité par remace

Oui. Non. Attends, je regarde mieux et je te dis.

+0 -0

Cette réponse a aidé l'auteur du sujet

Salut !

Je peux te demander avec quel navigateur tu testes ?

Je sais que les notifications ne sont pas implémentées depuis très longtemps sur Chrome notamment, et que c'est pas garanti que le comportement soit idéal/adéquat.

Evitez qu'on vous dise de les lire : FAQ PHP et Symfony 2Tutoriel WAMP • Cliquez 👍 pour dire merci • Marquez vos sujets résolus

+0 -0

Cette réponse a aidé l'auteur du sujet

Le code fait exactement ce qu'il doit faire. (EDIT : façon de dire que quand je l'ai lu je savais que ta fonction était appelée toutes les 5s).

T'as passé quoi en second paramètre de addEventListener ?

C'est quoi généralement le second paramètre qu'on passe à cette fonction ?

T'as fait l'erreur de base quand on bosse avec des closures (ou callbacks, ou pointeurs de fonction ou trucs du genre), je te laisse trouver par toi-même. Cette connerie faut la faire au moins une fois.

Mais ce qui devrait t'aiguiller c'est "ma fonction est appelée au mauvais moment".

Édité par Javier

Happiness is a warm puppy

+0 -0
Auteur du sujet

déjà, merci à vous 2 pour votre aide.

Ymox: sur chrome, mais j'utilise ni webkit, ni leurs notifications riches qui utilisent l'API experimental: tout ce que j'utilise est inclus dans js, de base. (sauf jquery, mais pour une sombre histoire de copie de code, et seulement pour ça)

Javier: de toute façon le code fait toujours ce qu'on lui dit de faire. par contre, ce que je cherche à lui faire faire, c'est une notification "lien hypertexte", et au lieu de lancer l'alerte au click sur la notification, comme prévu, ça se fait au chargement de la notification. c'est pas le contenu de l'alerte, qui m'intéresse, mais le moment de l'action.

EDIT: TROUVE!!! le point-virgule à la fin de la fonction!

Oui. Non. Attends, je regarde mieux et je te dis.

+0 -0

Mmmhhh

1
n.addEventListener('click',fonction(event),false);

n'apparaît pas au clic sur la notification, comme prévu, mais au chargement de la notification

fonction(event) ça fait quoi à ton avis ?

fonction c'est quoi ?

Exemple trouvé au pif sur internet :

1
element.addEventListener("click", function(){ alert("Hello World!"); });

Second exemple :

1
2
3
4
5
element.addEventListener("click", myFunction);

function myFunction() {
    alert ("Hello World!");
}

Tu vois la différence majeure entre les exemples et ton code ? Ou pas ?

Édité par Javier

Happiness is a warm puppy

+0 -0
Auteur du sujet

je réponds dans l'ordre à tes questions, mais c'est pas dit que je comprenne mieux.

fonction(event): my bad, en fait c'était fonction(e) que je voulais écrire. et du coup cette modif, ça a fait marcher le code. et je vois à peu près pourquoi. (j'avais passé en argument la classe event, et pas une instance de celle-ci, du coup… ça pouvait pas marcher)

fonction c'est quoi? bah… à priori un pointeur vers une fonction, de ce qu'il me semble avoir compris… enfin une référence, quoi…

du coup… je vois pas trop la différence, en terme de "ce que ça fait de mal".

Édité par remace

Oui. Non. Attends, je regarde mieux et je te dis.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte