Nous sommes actuellement le 13 Juil 2026, 02:26

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 6 message(s) ] 
Auteur Message
MessagePublié: 12 Juil 2004, 14:37 
Hors-ligne
Occasionnel
Occasionnel
Avatar de l’utilisateur

Inscription : 25 Mars 2002, 16:23
Message(s) : 197
Localisation : Montréal
J'essaye de remplir dynamiquement un <div>. Ça marche super bien avec IE mais Netscape veux rien savoir.

J'obtiens le data d'un fichier sur le serveur avec le javascript en utilisant l'activeXObject pour IE et l'objet XMLHttpRequest pour Netscape. Je fait un setintervale pour rafraichir le data tout les 5 seconde. Aucun problème rendu ici, tout fonctionne bien.

C'est lorsque je veux mettre le data dans le <div> que le problème commence. Voici mon div:
Code :
<div id="statuscontent"></div>


En super simplifié voici mon code pour IE (qui marche):

//javascript
Code :
statuscontent.innerHTML = fullstatus;


Voici pour netscape:
//javascript
Code :
document.getElementById("statuscontent").innerHTML = fullstatus;


La petite console javascript me dit que document.getElementById("statuscontent") n'a pas de propriété...

J'ai cherché et j'ai trouvé ça que je trouve en plus tordu:

//javascript
Code :
document.getElementById("statuscontent").childNodes[0].nodeValue  = fullstatus;


Anyway...il me dit la même chose...:(

Je ne comprend pas pourquoi il ne trouve pas l'objet

Merci si vous avez une idée

G


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 12 Juil 2004, 21:15 
Hors-ligne
A réponse à tout!
A réponse à tout!
Avatar de l’utilisateur

Inscription : 14 Mars 2002, 22:24
Message(s) : 3308
Localisation : Québec
Probablement que la fonction retourne un objet de base comme une node.
Une node ne possède pas la propriétée qui est tentée d'appeler.

Le DOM chevauche le javascript dans pas mal de cas dans les scripts dynamiques. Pour une référence sur le dom, tu peux aller voir sur le site du w3c (http://www.w3c.org).

Il y a une fonction qui permet d'accéder à une variable générique

_________________
Linux 2.6.22 debian gcc 4.2
KDE 3.5.7 / xorg-x11 7.3


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 12 Juil 2004, 23:14 
Hors-ligne
Petit nouveau
Petit nouveau

Inscription : 19 Fév 2002, 18:51
Message(s) : 34
Localisation : Québec
la propriété innerHTML est propriétaire à IE effectivement. Sinon, j'ai testé, et on dirait que ton bug, qui apparait autant sur IE que sur Mozilla Firefox, semble être que le code est exécuté avant que l'arbre DOM soit complètement chargé... Si je mets le getElementById sur un bouton, tout fonctionne, mais s'il est simplement exécuté au chargement de la page, il ne fonctionne pas...

Tu peux regarder les exemples de Mozilla pour XMLHttpRequest pour voir comment ils font pour modifier des div tout de suite après la requête :
http://www.mozilla.org/xmlextras/tests.html


Haut
 Profil  
Répondre en citant  
 Sujet du message: La solution!
MessagePublié: 13 Juil 2004, 11:09 
Hors-ligne
Occasionnel
Occasionnel
Avatar de l’utilisateur

Inscription : 25 Mars 2002, 16:23
Message(s) : 197
Localisation : Montréal
Merci à vous 2. En effet le javascript tente de remplir des champ qui ne sont pas encore créé. En mettant la fonction dans BODY onload le problème est réglé....enfin parteillement. Une commande spéciale (tordu?!) pour remplir le div est nécessaire pour une compatibilité IE et Netscape.

Code :
<script type="text/javascript">
function get_status()
{
  var p;
  try {
    p = new XMLHttpRequest();
  } catch (e) {
    p = new ActiveXObject("Msxml2.XMLHTTP");
  }
  p.open("GET", "status.txt",false);
  p.send(null);

  document.getElementById("id1").firstChild.nodeValue = p.responseText;
}

function get_status_interval(){
   get_status();
   setInterval("get_status()", 5000); //  call the status update each 5 seconds
}

</script>


et le HTML

Code :
<body  onload="get_status_interval();">

<div id="id1">@@No result@@</div>

</body>


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 13 Juil 2004, 17:25 
Hors-ligne
A réponse à tout!
A réponse à tout!
Avatar de l’utilisateur

Inscription : 14 Mars 2002, 22:24
Message(s) : 3308
Localisation : Québec
La commande n'est pas si spéciale. C'est du code DOM assez standard comme j'en ai fait.

C'est un style assez différent que le javascript qui est basé sur le fait que le html est très apparenté au xml.

Le but du dom est de définir un standard pour éviter de faire du code pour chaque navigateur qui doit afficher la page.

_________________
Linux 2.6.22 debian gcc 4.2
KDE 3.5.7 / xorg-x11 7.3


Haut
 Profil  
Répondre en citant  
 Sujet du message:
MessagePublié: 14 Juil 2004, 09:21 
Hors-ligne
Occasionnel
Occasionnel
Avatar de l’utilisateur

Inscription : 25 Mars 2002, 16:23
Message(s) : 197
Localisation : Montréal
Matbouch a écrit:
La commande n'est pas si spéciale. C'est du code DOM assez standard comme j'en ai fait.


Je trouvais que styleid.innerHTML = content; était beaucoup plus "userfriendly".

Et de toute manière le .firstchild.nodevalue occasionne un bug. Si je veux afficher du HTML (après un traitement sur le txt que je veux afficher, par exemple changer la couleur en rouge si j'obtien un mot comme "failed") , le HTML n'est pas interprété et est printé comme tel avec les tag HTML!!!

Au moin avec innerHTML le HTML était interprété. Maintenant je vais devoir ajouter une ligne qui va modifier le css de l'element...

G


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 6 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site