Fonction "str_replace" dans une DIV en Javascript ?

silver Messages postés 31 Date d'inscription mercredi 7 novembre 2001 Statut Membre Dernière intervention 2 avril 2016 - 24 juin 2012 à 19:41
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 28 juin 2012 à 08:36
Bonjour !

Je souhaite ajouter des smileys à un minichat instantanné. Le bout de code javascript suivant est issu d'un script utilisé pour un chat instantané. Actuellement, le chat affiche en instantanné le nom de l'utilisateur, son avatar, son message et la date du message. J'aimerais également que les codes smileys contenus dans le message soit traduis en images réelles. Mais à chaque fois que j'ai essayé quelque chose, j'obtenais le code de l'image et non l'image réel, tel que ci dessous :

Silver a ecrit le 2012-01-08 a 15:03:02 :
Salut.

Dans le fichier script.js :
//inserts the new content into the page
function insertNewContent(liName,liText,liTime1,liTime2,liAvatar) {
insertO = document.getElementById("outputList");
oLi = document.createElement('li');
oSpan = document.createElement('span');
oImg = document.createElement('img');	
oSpan.setAttribute('className','name'); //for IE's sake
oSpan.setAttribute('class','name');
oImg.setAttribute('src','avatar/'+liAvatar);
oName = document.createTextNode(' '+liName+' a ecrit le '+liTime1+' a '+liTime2+' :');
oText = document.createTextNode(liText);
oSpan.appendChild(oImg);
oSpan.appendChild(oName);
oLi.appendChild(oSpan);
oLi.appendChild(oText);

//insertO.insertBefore(oImg, insertO.firstChild);
insertO.insertBefore(oLi, insertO.firstChild);
}


Dans le fichier chat.php :

        <li>Silver :Bienvenue sur le Chat</li> 



Est-il possible de traduire la fonction php ci-dessous en javascript afin de remplacer les codes smileys contenus dans la variable "oText" par les images réelles ?
function controle($texte)
{
  $texte = htmlspecialchars($texte);
  //$texte = nl2br($texte);
  $texte = str_replace(":O","",$texte);
  $texte = str_replace("^^","",$texte);
  $texte = str_replace("lol","",$texte);
  $texte = str_replace("o_O","",$texte);
  $texte = str_replace(";)","",$texte);

  return $texte;
}


En vous remerciant d'avance si vous avez une solution.

6 réponses

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
25 juin 2012 à 09:25
Salut,

peut-être trouveras-tu ton bonheur dans la fonction replace du Javascript.
0
silver Messages postés 31 Date d'inscription mercredi 7 novembre 2001 Statut Membre Dernière intervention 2 avril 2016
25 juin 2012 à 16:01
Merci pour ta réponse

Cette fonction me semble bien appropriée. Je l'essaye ce soir et te tiens au courant du résultat, et de mes éventuelles difficultés car je suis novice en javascript.
0
silver Messages postés 31 Date d'inscription mercredi 7 novembre 2001 Statut Membre Dernière intervention 2 avril 2016
26 juin 2012 à 22:38
Ci-dessous la fonction Javascript avec les lignes commentées que j'ai rajoutées :

//inserts the new content into the page
function insertNewContent(liName,liText,liTime1,liTime2,liAvatar) {
// var reg = new RegExp("(:O)", "g"); // Code smiley à remplacer
insertO = document.getElementById("outputList");
oLi = document.createElement('li');
oSpan = document.createElement('span');
oImg = document.createElement('img');	
oSpan.setAttribute('className','name'); //for IE's sake
oSpan.setAttribute('class','name');
oImg.setAttribute('src','avatar/'+liAvatar);
oName = document.createTextNode(' '+liName+' a ecrit le '+liTime1+' a '+liTime2+' :');
// liText = liText.replace(reg,""); // Remplacement du code smiley par l'image correspondante
oText = document.createTextNode(liText);
oSpan.appendChild(oImg);
oSpan.appendChild(oName);
oLi.appendChild(oSpan);
oLi.appendChild(oText);

insertO.insertBefore(oLi, insertO.firstChild);
}


Malheureusement, je n'obtiens toujours pas ce que je veux :
[b]Silver a ecrit le 2012-01-08 a 15:03:02 :
Test Smiley /b

Comment faire pour que la page affiche l'image et non son code textuel ?

Silver
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
27 juin 2012 à 08:18
Salut,

c'est toi qui a codé le reste du chat ?
Là à vu de nez je dirais que y'a un interprétation JS du contenu inséré pour éviter les injections de tag/scripts.
0

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

Posez votre question
silver Messages postés 31 Date d'inscription mercredi 7 novembre 2001 Statut Membre Dernière intervention 2 avril 2016
27 juin 2012 à 17:36
Salut,

Je ne suis pas l'auteur du reste du chat. Je rajoute seulement des fonctionnalités à un chat déjà existant. Le chat provient de : http://chat.plasticshore.com/

Tu pourras retrouver la fonction javascript citée précédemment.

Je l'ai déjà un peu modifiée pour afficher les avatars des personnes connectés à mon site http://filmatouva.kegtux.org/ et la date/heure de leurs messages. Il ne manque plus que les smileys

J'ai aussi pensé à un problème de protection JS du contenu inséré pour éviter les injections de tag/scripts, mais impossible de trouver la fonction responsable de cela
Accepterais-tu de jeter un oeil au script complet ?

Merci pour ton aide.

Silver
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
28 juin 2012 à 08:36
Re,

j'ai regardé rapidement et je n'ai pas trouvé non plus.
Et je vais pas avoir le temps de m'y pencher plus que ça, désolé.
0
Rejoignez-nous