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:
Et celui-ci aussi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part $("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+': </span><span class="chatboxmessagecontent">'+replaceEmoticons(item.m)+'</span></div>');
mais celui-ci, non:
Code : Sélectionner tout - Visualiser dans une fenêtre à part $("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+': </span><span class="chatboxmessagecontent">'+url_to_link(item.m)+'</span></div>');
J'ai aussi essayé de mettre de cette façon:
Code : Sélectionner tout - Visualiser dans une fenêtre à part $("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+': </span><span class="chatboxmessagecontent">'+url_to_link(replaceEmoticons(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?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>');
Voici mes 2 fonctions:
SMYLEYS:
LIENS:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }); }
Merci d'avance pour votre aide!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>"); }![]()
Partager