OVH Cloud OVH Cloud

Comment forcer l'affichage ?

13 réponses
Avatar
Olivier Miakinen
Bonjour,

J'ai déjà posé à peu près la même question dans fclj, mais comme
personne n'a su me répondre je la repose dans fciwa. Je mets quand même
le suivi vers fclj car je ne vois pas comment la solution pourrait être
autrement qu'en JavaScript (merci de changer le suivi si je m'étais trompé).

J'ai un script en JavaScript qui fait des tas de choses très longues
(je passe les détails) et qui de temps en temps rajoute des messages
pour faire patienter, au moyen de la fonction appendChild() du Document
Object Model (DOM).

Cela fonctionne très bien avec Internet Explorer qui affiche aussitôt
tout ce que je lui demande, mais pas avec Netscape 7 : celui-ci attend
que tous les traitements soient terminés avant d'afficher d'un seul coup
les différents messages d'attente. Avouez que ce n'est pas très utile
d'attendre une minute devant un écran vide, avant de voir s'afficher en
une fraction de seconde : « patientez une minute - patientez 50 secondes
- patientez 40 secondes - patientez 30 secondes - plus que 20 secondes -
j'y suis presque - c'est fini ! »

Alors voilà, je voudrais savoir s'il y a un moyen pour forcer le
navigateur à afficher les messages de progression au fur et à mesure
au lieu de tout faire d'un coup.

Merci !

[ suivi sur fr.comp.lang.javascript ]

3 réponses

1 2
Avatar
Olivier Miakinen

Modulo des « window.setTimeout() » au lieu de « setTimeout() »,


Ah ? Il me semble que window n'est quasiment jamais obligatoire car
il correspond à l'objet Global dans le navigateur et est donc sous-entendu.


Mea culpa, mea maxima culpa. J'avais initialement écrit SetTimeout().
En vérifiant sur selfhtml, j'ai corrigé en window.setTimeout(). Mais je
viens d'essayer setTimeout() qui marche finement. Je peux le laisser
comme ça sans inconvénient, quel que soit le navigateur ?

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.


Avatar
YD

Mea culpa, mea maxima culpa. J'avais initialement écrit SetTimeout().
En vérifiant sur selfhtml, j'ai corrigé en window.setTimeout(). Mais je
viens d'essayer setTimeout() qui marche finement. Je peux le laisser
comme ça sans inconvénient, quel que soit le navigateur ?


Oui. Comme je le disais, on n'est jamais obligé de préciser window, car c'est
l'objet Global du script, c'est donc lui qui est interrogé quand le moteur de
script recherche une variable, une propriété... Une variable globale définie
est une propriété de l'objet window : var a définit en fait window.a

On est obligé de l'utiliser dans de rares cas où une confusion peut se produire.
Ça peut se présenter dans un gestionnaire d'événement ou dans une définition d'un
objet, bref quand this ne renvoie pas à window et qu'une propriété de this a le
même nom qu'une de l'objet window (et la recouvre si on ne préfixe pas avec
window.).

Autrement dit, quand le moteur de script rencontre un nom de propriété (méthode,
variable, etc.) il regarde si ce nom est défini dans le contexte en cours
(qu'on peut obtenir avec this). Si ce n'est pas le cas, il interroge l'objet
Global qui est fourni par l'application hôte et qui dans le cas d'un navigateur
est l'objet window.

--
Y.D.

Avatar
Olivier Miakinen

[...] quand le moteur de script rencontre un nom de propriété (méthode,
variable, etc.) il regarde si ce nom est défini dans le contexte en cours
(qu'on peut obtenir avec this). Si ce n'est pas le cas, il interroge l'objet
Global qui est fourni par l'application hôte et qui dans le cas d'un navigateur
est l'objet window.


Vu ! Je ne compte plus le nombre de renseignements à propos de
JavaScript dont je te suis redevable. J'espère avoir l'occasion un
jour de te payer un pot pour tout cela.

--
Olivier Miakinen
Non, monsieur le juge, je vous le jure : jamais je n'ai cité
Bruxelles dans ma signature.

1 2