Deux fonctions sur la même chaîne.
Bonjour! J'hésitais à poser ma question dans jquery ou ici mais bon, voyez vous-même:
Dans mon système de chat, j'ai une fonction js se nommant replaceEmoticons() qui fonctionne bien mais j'ai voulu ajouter aussi une fonction "url_to_link()" afin de rendre les liens cliquables dans la fenetre de chat. Mais j'essaie d'appliquer ces 2 fonctions à ma chaine et il n'y a qu'une sur deux qui marche.
Ce code est bon:
Code:
$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+': </span><span class="chatboxmessagecontent">'+replaceEmoticons(item.m)+'</span></div>');
Et celui-ci aussi:
Code:
$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+': </span><span class="chatboxmessagecontent">'+url_to_link(item.m)+'</span></div>');
mais celui-ci, non:
Code:
$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+': </span><span class="chatboxmessagecontent">'+url_to_link(replaceEmoticons(item.m))+'</span></div>');
J'ai aussi essayé de mettre de cette façon:
Code:
1 2 3 4
| item.m = replaceEmoticons(item.m);
item.m = url_to_link(item.m);
$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+': </span><span class="chatboxmessagecontent">'+item.m+'</span></div>'); |
Mais sans succès... Comment devrais-je procéder? Devrais-je faire une seule fonction qui remplace les smyleys et qui gère les lien en même temps?
Voici mes 2 fonctions:
SMYLEYS:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| function replaceEmoticons(text) {
var emoticons = {
':D' : 'rire.png',
':P' : 'grimace.png',
':)' : 'sourire.png',
'o0' : 'perdu.png',
':-/' : 'confus.png',
':S' : 'merde.png',
':(' : 'triste.png',
';)' : 'clindoeil.png',
':|' : 'neutre.png',
':c' : 'pleurer.png',
';P' : 'grimace.png',
':vball:' : 'vball.gif',
}, url = "../images/smilies/", patterns = [],
metachars = /[[\]{}()*+?.\\|^$\-,&#\s]/g;
// build a regex pattern for each defined property
for (var i in emoticons) {
if (emoticons.hasOwnProperty(i)){ // escape metacharacters
patterns.push('('+i.replace(metachars, "\\$&")+')');
}
}
// build the regular expression and replace
return text.replace(new RegExp(patterns.join('|'),'g'), function (match) {
return typeof emoticons[match] != 'undefined' ?
'<img src="'+url+emoticons[match]+'"/>' :
match;
});
} |
LIENS:
Code:
1 2 3 4
| function url_to_link(text) {
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
return text.replace(exp,"<a href='$1'>$1</a>");
} |
Merci d'avance pour votre aide! :)