ReadyState sous navigateur autre que ie

Résolu
bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 - 29 août 2008 à 10:48
bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 - 1 sept. 2008 à 12:00
Bonjour,

J'ai un div dans ma page et il faut que j'attende qu'il soit chargé pour pouvoir effectuer des traitements.
Sous ie je fais :
if(monDiv.readyState  == "complete"){...}
seulement cette propriété ne marche pas avec les autres navigateurs (undefined) et j'ai beau cherché
je ne trouve pas la solution sur google.
Cette propriété existe-t-elle pour les autres navigateurs ?
Merci d'avance

10 réponses

bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 1
1 sept. 2008 à 12:00
J'ai fini par trouver une solution plus ou moins propre...
En gros je teste si toutes les images sont chargés s'il y en a car c'était ça le problème : les images non chargées.
En tout cas merci pour ton aide bultez.
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
29 août 2008 à 10:52
bonjour,
je suppose que tu charge ton div avec AJAX.
teste le readystate d'ajax

xml.onreadystatechange = function()
                {    if(xml.readyState == 4)
                    {   traitement du xml.responseText; ...
                        ==> div, donc le contenu du div est ok
...
xml.send(env);

Cordialement    Bul   [mon Site] [M'écrire], <!--
0
bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 1
29 août 2008 à 10:54
Non c'est pas de l'ajax, c'est juste savoir si l'élément est complètement chargé dans la page, je veux dire l'html.
Comme pour une image.complete mais avec un div.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
29 août 2008 à 11:07
inutile de tester alors....
derrière le div, c'est accessible, même si les images ne sont pas totalement chargées
et là, on pourraitt tester effectivement ( mais pourquoi ? ) complete
CordialementBul[mon Site][M'écrire], <!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 1
29 août 2008 à 11:11
Désolé je vois ce que tu veux dire par "derrière le div, c'est accessible".
Donc pourquoi j'ai besoin de savoir ça : il faut que je récupère les dimensions de certains éléments qui sont
contenu dans ce div pour pouvoir effectuer des traitements. Et donc s'ils ne sont pas chargés...pas de dimensions...
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
29 août 2008 à 13:00
tout ce que tu veux

ici c'est derrière le div, et on peut accéder à tout ce qu'il contient.
c'est chargé ( sauf les images pas affichées )
>>il faut que je récupère les dimensions de certains éléments qui sont contenu dans ce div
>>pour pouvoir effectuer des traitements.
ces éléments ne sont pas mis en dynamique ? ce ne sont pas des images ?
les dimensions sont ok.
les images, faut tester complete comme tu le disais.
en dynamique, une fois l'élément mis, ses dimensions sont bonnes

au pire... window.onload=function() { ici toute la page est chargée }

CordialementBul[mon Site][M'écrire], <!--
0
bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 1
31 août 2008 à 13:45
Le truc c'est qu'il n'y a que ce div dans la page donc je ne peux pas regarder si la suite est chargée...
Ensuite oui il peut y avoir des images, mais pas forcément donc pas possible de tester là dessus.
Donc d'après ce que je comprend le readyState n'existe pas sous firefox pour un élément html ??
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
31 août 2008 à 14:39
>> le readyState n'existe pas sous firefox pour un élément html ?
je ne savais même pas que ça existait pour un autre navigateur....

>>'il n'y a que ce div dans la page donc je ne peux pas regarder si la suite est chargée...
qu'il existe autre chose ou rien, ne change rien.
les navigateurs interprétent les éléments les uns à la suite des autres, en séquence
donc si on est "derrière" un élément, on peut l'utiliser.
les images n'étant que, parfois, partiellement affichées, c'est tout.

je ne vois pas ce qui te gène,  en clair.
que veux tu tester qui pourrait ne pas être chargé dans ce div ?
( hors ajax, images, ajout dynamique... )

Cordialement     Bul  [mon Site] [M'écrire], <!--
0
bizibiz17 Messages postés 142 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 29 août 2009 1
31 août 2008 à 17:07
En gros je créé un div contenant plus ou moins d'éléments html, je regarde la taille, puis je créé d'autres éléments en fonction de la taille de ceux créés précédemment. Et quelquefois, le traitement js va plus vite que l'affichage de ces éléments et donc je ne récupère pas la bonne taille.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 sept. 2008 à 05:32
tu crée les éléments dans le div dans un fonction
et juste derrière tu crée les autres ?    c'est ça ?

function element_dans_le_div() {  .... }
...
element_dans_le_div();
création d'autres éléments en fonction du contenu du div

donc la function element_dans_le_div est lancée
et immédiatement, sans attendre la fin de cette fonction, ça enchaîne sur la suite.
donc oui ça peut planter

__ mettre "création d'autres éléments en fonction du contenu du div"
    en fin de la fonction element_dans_le_div ( ou l'appel à une fonction qui créera les autres élements )
__ attendre avant d'enclencher la création que les éléments soient bien créées
    par exemple, en fin de element_dans_le_div mettre une variable à true ( qui
        a été initialisée à false )
        et avant la création des autres éléments attendre tant que cette variable n'est pas = true
    ou attendre tant que le dernier élément ajouté n'existe pas
...

je ferais plutôt :

function element_dans_le_div( appel )
{  ... ajout des élements dans le div....
   appel();
}
....

element_dans_le_div( fonction_pour_creer_les_autre_elements );

Cordialement     Bul  [mon Site] [M'écrire], <!--
0
Rejoignez-nous