Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comportement de firevent

1 réponse
Avatar
WebShaker
salut.

j'utilise une petite fonction que j'ai trouvé sur le net qui est la suivante

function fireEvent(obj, event)
{
if (document.createEventObject)
{
var evt = document.createEventObject();
return obj.fireEvent('on'+event,evt)
}
else
{
var evt = document.createEvent("HTMLEvents");
evt.initEvent(event, true, true );
return !obj.dispatchEvent(evt);
}
}


l'idée est de pouvoir déclancher un evenement (genre onchange) via un
script.

Je me demande seuleument dans quel ordre se réalisent les appels

supposons que j'ai un champ input
<input id='monchamp' onchange='this.value=0;'>

si j'execute le code suivant
var oMonChamp = /* nom object input */
fireEvent(oMonChamp, 'change');
oMonChamp.value = 1;

suis-je certain d'avoir 1 au final dans mon champ input ?
ou bien y a t-il une chance (un navigateur) qui va pousser l'evenement
sur une pile et éventuellement me déclencher mon onchange après que j'ai
remis 1 dans le champ input ???

voila.
J'ai tester quelques navigateurs et cela semble fonctionner comme je le
souhaite, mais bon une confirmation serait quand meme la bienvenue.

Merci

Etienne

1 réponse

Avatar
SAM
Le 3/12/10 11:22 AM, WebShaker a écrit :
salut.

j'utilise une petite fonction que j'ai trouvé sur le net qui est la
suivante

function fireEvent(obj, event)
{
if (document.createEventObject)
{
var evt = document.createEventObject();
return obj.fireEvent('on'+event,evt)
}
else
{
var evt = document.createEvent("HTMLEvents");
evt.initEvent(event, true, true );
return !obj.dispatchEvent(evt);
}
}


l'idée est de pouvoir déclancher un evenement (genre onchange) via un
script.

Je me demande seuleument dans quel ordre se réalisent les appels

supposons que j'ai un champ input
<input id='monchamp' onchange='this.value=0;'>

si j'execute le code suivant
var oMonChamp = /* nom object input */
fireEvent(oMonChamp, 'change');
oMonChamp.value = 1;

suis-je certain d'avoir 1 au final dans mon champ input ?
ou bien y a t-il une chance (un navigateur) qui va pousser l'evenement
sur une pile et éventuellement me déclencher mon onchange après que j'ai
remis 1 dans le champ input ???

voila.
J'ai tester quelques navigateurs et cela semble fonctionner comme je le
souhaite, mais bon une confirmation serait quand meme la bienvenue.



Je viens d'essayer et ... ce truc ne fait rien dans mon Firefox.3
(rien d'autre que changer le value)

à moins que je n'ai mal copié-collé ?

Ceci dit, je ne comprends pas comment ni pourquoi ça fonctionnerait pour
un "onchange"
Qu'est-ce qui change ? et quand ?
quelle action est requise au changement ?
(à quoi sert-ce de déclencher un onchange alors que rien ne change ?)

De ce que j'ai compris ce fireEvent est essentiellement fait pour
simuler un clic sur n'importe quel élément de la page (même s'il n'est
pas dans un form).

Pour la partie :
oMonChamp.value = 1;
assurément, qque soit le navigateur, si oMonChamp est un élément de
formulaire et s'il supporte l'attribut 'value', cette valeur passera à 1

Pour les actions sur des éléments de formulaires il est bien plus simple
d'utiliser les fonctions du JS de nos grand' mères

oMonChamp.onchange = function(){ this.value = 1 }

--
sm