2010-05-30 4 views
0

Dans mon db j'ai sauvé tous les liens sous la forme:Comment transformer les liens texte en liens HTML du côté client avec javascript

www.example.com or http://www.example.com 

Y at-il un moyen de transformer ces liens texte en liens HTML au client côté (par exemple, javascript) avec étiquette et paramètres comme ceci:

<a href="http://www.example.com" rel="nofollow">www.example.com</a> 
+3

Puisque vous utilisez un db vous parlez d'une application web dynamique. Pourquoi ne pas générer les liens côté serveur? – cherouvim

+0

Il existe plusieurs solutions, mais plus d'informations sont nécessaires. Je suggère de le faire côté serveur un cherouvim dit - sinon, oui, c'est possible avec Javascript, mais nous avons besoin de contexte. Où sera ce texte? Y aura-t-il d'autres marques d'ancrage dans la même zone? –

Répondre

5

ce serait probablement plus intelligent de faire sur le côté serveur comme cherouvim suggéré, mais voici une (naïve) la fonction javascript qui le fait pour les formats spécifiés (url avec et sans http://-prefix)

function makeLink(link) { 
     var url, desc; 

     if (link.match('^http://')) { 
      url = link; 
      desc = link.substr(7, link.length - 7); 
     } else { 
      url = 'http://' + link; 
      desc = link; 
     } 

     return '<a href="' + url + '" rel="nofollow">' + desc + '</a>'; 
    } 

S'il vous plaît noter qu'il ne gère pas l'entrée inattendue (https ...) très bien, donc s'il vous plaît ne pas utiliser tel quel dans l'environnement de production :)

+0

Pensez-vous vraiment que 'rel = nofollow' est utile, puisqu'il est généré sur le client? –

+0

@nikc - Je répondais à la demande de l'OP. Point pris cependant. – jevakallio

+0

Oups! Je n'ai pas vu ça là-bas. Pardon. :-) –

0

Je voudrais essayer comme ceci:

text.replace(/([A-Za-z]+:\/\/)?[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/, function(url) { 
return url.link(url); 
}) 
+0

Je suis tenté de downvote. C'est comme répondre à la question «Quelle est la réponse à la vie, à l'univers et à tout». C'est peut-être vrai, mais n'explique vraiment rien. –

Questions connexes