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

FireBug qui Bug !!!

4 réponses
Avatar
Etienne SOBOLE
Salut.

Alors la c'est quand meme con lorsqu'on sait a quel point Firebug est utile.
Et pourtant je suis tombé sur un truc marrant (enfin façon de parler)

Lors d'une requete Ajax vous avez un truc de ce genre
xhr_object = new XMLHttpRequest();
xhr_object.onreadystatechange=function() { code de la callback }
xhr_object.open('GET', url, false);

le dernier paramètre définissant si vous avez une callback ou non...

et bien si vous avez défini une callback, le code si dessus n'est pas appelé
a cause du false. Ce qui est finalement assez normal.
Sauf que si vous avez Firebug d'activé pour ce site, onreadystatechange va
etre déclanché que vous ayez mis false ou true dans le Open.

La ou c'est encore plus visieux, c'est que les autre navigateur n'ont que
faire de ce 3eme paramètre et déclanche l'évènement à tous les coup.

Bref, vous avez l'impression que vous avez fait un code super qui marche
partout et en fait... non !

Etienne

4 réponses

Avatar
Mickaël Wolff
Etienne SOBOLE a écrit :
Salut.

Alors la c'est quand meme con lorsqu'on sait a quel point Firebug est utile.
Et pourtant je suis tombé sur un truc marrant (enfin façon de parler)

Lors d'une requete Ajax vous avez un truc de ce genre
xhr_object = new XMLHttpRequest();
xhr_object.onreadystatechange=function() { code de la callback }
xhr_object.open('GET', url, false);

le dernier paramètre définissant si vous avez une callback ou non...



Faux. Tu interprète mal se paramètre. Le troisème paramètre indique si
l'appel doit être asynchrone (true) ou synchrone (false).

http://www.w3.org/TR/2006/WD-XMLHttpRequest-20060619/#dfn-open

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
Etienne SOBOLE
> Faux. Tu interprète mal se paramètre. Le troisème paramètre indique si
l'appel doit être asynchrone (true) ou synchrone (false).

http://www.w3.org/TR/2006/WD-XMLHttpRequest-20060619/#dfn-open



N'empèche que si tu le mets a false sous FireFox,
l'evenement onreadystatechange n'est pas déclanché...
alors que si tu as firebug d'activé il est déclanché !!!

Ceci etant dit,
Je sais pas ce que tu appelles toi "asynchrone", mais le fait que la
callback soit appelée lors de la réponse http via le déclanchement d'un
èvenement (et donc sans bloquer le déroulement du javascript) me parait
justement être le comportement qu'on pourrait attendre une méthode
asynchrone !!!

Donc je pense que finalement j'interprète correctement ce paramètre ;)

Etienne
Avatar
Mickaël Wolff
Etienne SOBOLE a écrit :

N'empèche que si tu le mets a false sous FireFox,
l'evenement onreadystatechange n'est pas déclanché...
alors que si tu as firebug d'activé il est déclanché !!!



https://bugzilla.mozilla.org/show_bug.cgi?id13646

> > le dernier paramètre définissant si vous avez une callback ou non...
Donc je pense que finalement j'interprète correctement ce paramètre ;)



Relis-toi :p Dans ton premier message tu dis que le paramètre indique
si un événement est déclenché ou non, et dans le second tu vas dans mon
sens. On ne me fait pas de pirouette, j'vais encore avoir le tournis !

Le paramètre indique si oui ou non, on continue l'exécution du script
lorsque l'événement est déclenché, ou si on suspend. C'est du
multithread qui ne dit pas son nom (puisque le multithread n'existe pas
en Javascript, à ma connaissance, et modulo cetains bricolages que j'ai
rencontré).

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
Mickaël Wolff
Etienne SOBOLE a écrit :

N'empèche que si tu le mets a false sous FireFox,
l'evenement onreadystatechange n'est pas déclanché...
alors que si tu as firebug d'activé il est déclanché !!!



Bug visiblement connu et pénible à résoudre :
<https://bugzilla.mozilla.org/show_bug.cgi?id13646>

> > le dernier paramètre définissant si vous avez une callback ou non...
Donc je pense que finalement j'interprète correctement ce paramètre ;)



Relis-toi :p Dans ton premier message tu dis que le paramètre indique
si un événement est déclenché ou non, et dans le second tu vas dans mon
sens. On ne me fait pas de pirouette, j'vais encore avoir le tournis !

Le paramètre indique si oui ou non, on continue l'exécution du script
lorsque l'événement est déclenché, ou si on suspend. C'est du
multithread qui ne dit pas son nom (puisque le multithread n'existe pas
en Javascript, à ma connaissance, et modulo cetains bricolages que j'ai
rencontré).

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org