2010-05-30 66 views
0

在我的分貝我已保存的表單中的每個環節:如何把文字鏈接到HTML鏈接在客戶端使用JavaScript

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

有沒有辦法把這種文字鏈接到HTML鏈接在客戶端側(如,JavaScript),具有觸殺和參數是這樣的:

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

由於您使用的是數據庫,因此您正在討論動態Web應用程序。爲什麼不在服務器端生成鏈接? – cherouvim 2010-05-30 08:16:58

+0

有幾種解決方案,但需要更多信息。我建議在服務器端做一個cherouvim說 - 否則,是的,它可能與Javascript,但我們需要一些上下文。這個文本在哪裏?在同一區域是否還有其他定位標籤? – 2010-05-30 08:56:29

回答

5

這很可能是更明智的做在服務器端一樣cherouvim建議,但這裏有一個(幼稚)JavaScript函數,這是否爲指定的格式(網址有和沒有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>'; 
    } 

請注意它不處理意外輸入(HTTPS ...)非常好,所以請不要爲,在生產環境中:)

+0

你真的認爲'rel = nofollow'有什麼用處,因爲這是在客戶端生成的? – 2010-05-30 11:47:39

+0

@nikc - 我只是在履行OP的要求。雖然採取了點。 – jevakallio 2010-05-30 12:04:59

+0

糟糕!沒有看到那裏。抱歉。 :-) – 2010-05-30 12:09:43

0

我會嘗試像這樣使用:

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

我很想下決心。這就像回答「生命,宇宙和一切的答案是什麼」這個問題。這可能是事實,但沒有真正解釋任何事情。 – 2010-05-30 11:50:34