11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour/Bonsoir à tous,

Mise en situation:

Par l'intermédiaire d'un script AJAX ( en réalité AJAPHP ) je crée une/des <div> qui elle même doivent exécuter du javascript (aussi en asynchrone mais là n'est pas le pb).

Etant donné que les <div> sont créées en asynchrone et donc sans (re)chargement de la page sur laquelle elles se trouvent, je leurs assignent un gestionnaire d'évènement (sur onclick en l'occurence) comme ceci:

<div onclick="mafonction()">

Voici le problème:

Avec Firefox, il m'est impossible de récupérer une référence au noeud en question (<div>).

Admettons que mafonction() soit:

fucntion mafonction() {
alert(this);
}

j'obtiens [object Window], et quand je souhaite faire référence à l'évènement (onclick) par la méthode usuelle qui est par exemple:

function mafonction(e){
e = e || window.event;
alert(e.type);
}

La console d'erreur me dit que: e n'est pas défini.

Je précise que sous IE et Chrome le problème ne se pose pas.

Est-ce que quelqu'un connait une solution ?

Le but étant toujours de NE PAS avoir à recharger la page mais de pouvoir se référer à la div d'où l'évènement est parti.
Modifié par taerg (10 Sep 2013 - 14:57)
Bon je pense avoir trouvé d'où venait le problème, pour pouvoir récupérer l'évènement il faut passer en argument l'objet event à la fonction, de cette façon:

<div onclick="maFonction(event)">

j'avais essayé comme ceci <div onclick="maFonction(e)"> et comme cela <div onclick="maFonction()"> et je pensais qu'il suffisait de préciser dans la définition de la fonction que l'on souhaitait se référer à l'objet event, comme cela:

function maFonction(e){
e = e || window.event;
}

mais cela ne suffit pas avec Firefox, il faut préciser que l'on passe un argument et le nommé event.
Modifié par taerg (10 Sep 2013 - 14:51)