Le probleme est qu'event n'est pas disponible dans cette fonction, et
pas plus dans la fonction DlgKeyProc si je ne passe pas de parametres.
Comment faire ?
L'objet Event n'est pas global ?
J'ai essayé window.event ou document.window.event sans plus de succes...
(la fonction ShowDlg n'est pas appellée en direct mais par d'autres
fonctions, ca serait extrement lourd de passer l'event dans toute la
chaine jusqu'a ShowDlg).
--
Cherche boulot informaticien sur Toulouse, Nantes et Bordeaux de
préférence.
CV par retour de courrier. (gros systèmes s'abstenir)
Il faut attribuer une référence, pas appeler la fonction.
var obj = document.getElementById('mon_tag_HTML');
// ca, c'est pas une référence mais un appel de la fonction // pourquoi ? parce que les () obj.onkeypress = je_suis_pas_une_reference();
// ca, c'est une référence vers la fonction // pourquoi ? ben y'a pas les () obj.onkeypress = je_suis_une_reference;
Dans ce modèle d'événement, lors de l'appel de la référence ( avec un navigateur réellement DOM compliant va sans dire ), on a plusieurs choses qui sont mis en ordre : 1) this représente l'objet sur lequel l'event est placé 2) le premier paramètre de la fonction est l'event déclencheur
var b = document.body; b.onclick = alertes;
function alertes(event) { // DOM compliant : [object HTMLBodyElement] alert(this); // DOM compliant : [object MouseEvent] alert(event); }
Par contre avec IE, l'objet event n'est pas transmis en premier paramètre. Il faut aller chercher l'objet dans window.event, ce qui donne :
Mais attention à *aCallback* et à *dlgID* qui sont alors accessibles en dehors de leur scope d'application (on a créé une closure ici). Ca ne représente pas de problème particulier sauf pour IE qui peut alors avoir ces bien connues fuites de mémoire suivant le type d'objet et ce que tu en fais.
Le cas typique :
function DlgKeyProc(event, dlgID, aCallback } { $(dlgID)._je_provoque_une_fuite_IE = aCallback; }
-- laurent
Le but est que cette fonction definisse un nouveau handler keypress pour un
element div.
Il faut attribuer une référence, pas appeler la fonction.
var obj = document.getElementById('mon_tag_HTML');
// ca, c'est pas une référence mais un appel de la fonction
// pourquoi ? parce que les ()
obj.onkeypress = je_suis_pas_une_reference();
// ca, c'est une référence vers la fonction
// pourquoi ? ben y'a pas les ()
obj.onkeypress = je_suis_une_reference;
Dans ce modèle d'événement, lors de l'appel de la référence ( avec un
navigateur réellement DOM compliant va sans dire ), on a plusieurs
choses qui sont mis en ordre :
1) this représente l'objet sur lequel l'event est placé
2) le premier paramètre de la fonction est l'event déclencheur
var b = document.body;
b.onclick = alertes;
function alertes(event)
{
// DOM compliant : [object HTMLBodyElement]
alert(this);
// DOM compliant : [object MouseEvent]
alert(event);
}
Par contre avec IE, l'objet event n'est pas transmis en premier
paramètre. Il faut aller chercher l'objet dans window.event, ce qui donne :
Mais attention à *aCallback* et à *dlgID* qui sont alors accessibles en
dehors de leur scope d'application (on a créé une closure ici). Ca ne
représente pas de problème particulier sauf pour IE qui peut alors avoir
ces bien connues fuites de mémoire suivant le type d'objet et ce que tu
en fais.
Le cas typique :
function DlgKeyProc(event, dlgID, aCallback }
{
$(dlgID)._je_provoque_une_fuite_IE = aCallback;
}
Il faut attribuer une référence, pas appeler la fonction.
var obj = document.getElementById('mon_tag_HTML');
// ca, c'est pas une référence mais un appel de la fonction // pourquoi ? parce que les () obj.onkeypress = je_suis_pas_une_reference();
// ca, c'est une référence vers la fonction // pourquoi ? ben y'a pas les () obj.onkeypress = je_suis_une_reference;
Dans ce modèle d'événement, lors de l'appel de la référence ( avec un navigateur réellement DOM compliant va sans dire ), on a plusieurs choses qui sont mis en ordre : 1) this représente l'objet sur lequel l'event est placé 2) le premier paramètre de la fonction est l'event déclencheur
var b = document.body; b.onclick = alertes;
function alertes(event) { // DOM compliant : [object HTMLBodyElement] alert(this); // DOM compliant : [object MouseEvent] alert(event); }
Par contre avec IE, l'objet event n'est pas transmis en premier paramètre. Il faut aller chercher l'objet dans window.event, ce qui donne :
Mais attention à *aCallback* et à *dlgID* qui sont alors accessibles en dehors de leur scope d'application (on a créé une closure ici). Ca ne représente pas de problème particulier sauf pour IE qui peut alors avoir ces bien connues fuites de mémoire suivant le type d'objet et ce que tu en fais.
Le cas typique :
function DlgKeyProc(event, dlgID, aCallback } { $(dlgID)._je_provoque_une_fuite_IE = aCallback; }
Désolé pour la ligne oubliée. Je le sais par coeur, j'ai relu et pourtant j'ai oublié cette ligne indispensable à IE.
-- laurent
Thierry
Laurent Vilday wrote in news:445719d0$0$5057$:
Il faut attribuer une référence, pas appeler la fonction.
Ok, maintenant que tu le dis...
Dans ce modèle d'événement, lors de l'appel de la référence ( avec un navigateur réellement DOM compliant va sans dire ), on a plusieurs choses qui sont mis en ordre : 1) this représente l'objet sur lequel l'event est placé
Donc je peux utiliser this.id dans la callback, pas besoin d'utiliser le param de ShowDlg.
-- Cherche boulot informaticien sur Toulouse, Nantes et Bordeaux de préférence. CV par retour de courrier. (gros systèmes s'abstenir)
Laurent Vilday <mokhet@mokhet.com> wrote in
news:445719d0$0$5057$626a54ce@news.free.fr:
Il faut attribuer une référence, pas appeler la fonction.
Ok, maintenant que tu le dis...
Dans ce modèle d'événement, lors de l'appel de la référence ( avec un
navigateur réellement DOM compliant va sans dire ), on a plusieurs
choses qui sont mis en ordre :
1) this représente l'objet sur lequel l'event est placé
Donc je peux utiliser this.id dans la callback, pas besoin d'utiliser le
param de ShowDlg.
Il faut attribuer une référence, pas appeler la fonction.
Ok, maintenant que tu le dis...
Dans ce modèle d'événement, lors de l'appel de la référence ( avec un navigateur réellement DOM compliant va sans dire ), on a plusieurs choses qui sont mis en ordre : 1) this représente l'objet sur lequel l'event est placé
Donc je peux utiliser this.id dans la callback, pas besoin d'utiliser le param de ShowDlg.