createTextNode et balises HTML

createTextNode et balises HTML - HTML/CSS - Programmation

Marsh Posté le 16-05-2005 à 15:48:00    

Salut à tous,
 
Voilà, j'aimerais savoir si c'est possible d'afficher des balises HTML dans une structure DOM, à partir d'un texte dont on ne connait pas à l'avance les balises (par exemple, dans une shoutbox ou un chat).
 
En fait, c'est pour une shoutbox qui marche avec AJAX, pour Wordpress : http://blog.jalenack.com/archives/ [...] -auredict/
 
Je n'ai certainement pas du tout comprendre, dans le DOM, mais je vois absolument pas comment on pourrait faire pour traiter n'importe quelle balise HTML, à moins de faire de traiter toutes les balises possibles (enfin, elles sont limitées par le script PHP qui tourne derrière).
 
Ou alors en utilisant innerHTML, mais ça non plus, je ne vois pas où mettre le .innerHTML, ça ne marche nulle part.
 
Voilà la partie HTML en question :

Code :
  1. function handlehHttpReceiveChat() {
  2.   if (httpReceiveChat.readyState == 4) {
  3.     results = httpReceiveChat.responseText.split('---'); //the fields are seperated by ---
  4.     if (results.length > 3) {
  5.     for(i=0;i < (results.length-1);i=i+4) { //goes through the result one message at a time
  6.      insertNewContent(results[i+1],results[i+2],results[i+3]); //inserts the new content into the page
  7.      lastID = results[i];
  8.     }
  9.     }
  10.     setTimeout('receiveChatText();',<?php echo $refresh_rate; ?> ); //executes the next data query in n seconds
  11.   }
  12. }
  13. //inserts the new content into the page
  14. function insertNewContent(liName,liText, lastResponse) {
  15. oOld = document.getElementById("comment-new" );
  16. if (oOld) {
  17. oOld.style.background = "<?php echo $fade_to_hex; ?>";
  18. oOld.setAttribute('idName',''); // Makes previous comment-new's regular
  19. oOld.setAttribute('id',''); // Makes previous comment-new's regular
  20. }
  21.     response = document.getElementById("responseTime" );
  22.     response.replaceChild(document.createTextNode(lastResponse), response.firstChild);
  23. insertO = document.getElementById("outputList" );
  24. oLi = document.createElement('li');
  25. oLi.setAttribute('idName','comment-new'); //for IE's sake
  26. oLi.setAttribute('id','comment-new');
  27. oSpan = document.createElement('span');
  28. oSpan.setAttribute('className','name'); //for IE's sake
  29. oSpan.setAttribute('class','name');
  30. oName = document.createTextNode(liName+': ');
  31. oText = document.createTextNode(liText);
  32. oSpan.appendChild(oName);
  33. oLi.appendChild(oSpan);
  34. oLi.appendChild(oText);
  35. Fat.fade_element("comment-new", 30, <?php echo $fade_speed; ?>, "<?php echo $fade_from_hex; ?>", "<?php echo $fade_to_hex; ?>" );
  36. insertO.insertBefore(oLi, insertO.firstChild);
  37. }


 
Si quelqu'un a une quelconque idée, ça sera le bienvenu !


---------------
Mon blog
Reply

Marsh Posté le 16-05-2005 à 15:48:00   

Reply

Marsh Posté le 16-05-2005 à 16:00:04    

innerHTML est une fonction membre des balises (éléments) HTML en Javascript, elle remplace l'intérieur de la balise (son HTML interne) par le texte que tu lui files.
 
createTextNode, lui, crée uniquement du texte, brut, quelle que soit sa tronche (même si ce sont des balises html) il ne contient que du texte non interprété.
 
Donc si tu donnes le contenu "<strong>Gnii</strong>" à un innerHTML ça va afficher "Gnii" avec le style défini pour strong
Alors que si tu balances ça dans un createTextNode, ça va afficher le texte "<strong>Gnii</strong>" dans la page


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 16-05-2005 à 16:06:39    

masklinn a écrit :

innerHTML est une fonction membre des balises (éléments) HTML en Javascript, elle remplace l'intérieur de la balise (son HTML interne) par le texte que tu lui files.
 
createTextNode, lui, crée uniquement du texte, brut, quelle que soit sa tronche (même si ce sont des balises html) il ne contient que du texte non interprété.
 
Donc si tu donnes le contenu "<strong>Gnii</strong>" à un innerHTML ça va afficher "Gnii" avec le style défini pour strong
Alors que si tu balances ça dans un createTextNode, ça va afficher le texte "<strong>Gnii</strong>" dans la page


 
 
Ouaip, justement. En fait, voilà la structure de la fonction ci dessus :
 

Code :
  1. élément li (pour la mise en forme)
  2.    élément span (le nom du posteur)
  3.    élément texte (le texte)


 
Ce que je voudrais, c'est arriver à faire en sorte que l'élément texte... ben ne soit plus que du texte :/
En gros, que l'élément texte se comporte comme un innerHTML...
 
Est-ce possible ? Ou il faut revoir toute la structure de la fonction ?


---------------
Mon blog
Reply

Marsh Posté le 16-05-2005 à 16:37:28    

li.appendChild(document.createTextNode(le texte));
Là t'es tranquille, tout ce que tu lui balance est considéré comme du texte, par contre il faudra avoir extrait la partie "texte" de la partie "nom du posteur"
 
BTW au lieu d'utiliser des <li> tu peux utiliser des listes de définitions <dl>
un <dt> pour le nom du posteur et un <dd> pour le contenu du message, ça fonctionne pas mal


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed