2012-06-13 39 views
0

錨我有,我用它來檢測和更換錨(HTML)鏈接一個JavaScript函數。然而,問題是,有些人在這會導致頁面元素過低大規模的聯繫,這打破了網頁(典型值)粘貼。更換與鏈接和截斷值

有誰知道一個簡單的方法,以下兩種功能合而爲一,提供了一個錨標記與它裏面的鏈接截斷版?

IE轉換

http://Superlonglink 

進入

<a href="http://Superlonglink">http://Super...</a> 

使用下列功能的組合:

功能的錨來代替鏈接:

function replaceURLWithHTMLLinks(text) { 
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 
    return text.replace(exp,"<a href='$1' target='_blank'>$1</a>"); 
} 

函數來截斷字符串:

String.prototype.trunc = function(n){ 
     return this.substr(0,n-1)+(this.length>n?'':''); 
}; 

我一直在玩這個有一段時間了,但是我發現我的JavaScript正則表達式的理解是有點有限

+0

而不是使用JavaScript,你可以嘗試使用CSS'文本溢出截斷字符串:省略號;'我不知道這是否會在你的情況下工作,但無論如何。 =) – PEZ

回答

1
function replaceURLWithHTMLLinks(text, maxlen) { 
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 
    return text.replace(exp, function(link) { 
     return '<a href="' + link + '" target="_blank">' + 
      (link.length > maxlen ? link.substring(0, maxlen) + "..." : link) + '</a>' 
    }); 
} 

DEMO:http://jsfiddle.net/84Le9/2/

1

使用函數裏面替換,所以你可以操縱它。

function replaceURLWithHTMLLinks(text) { 
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 
    return text.replace(exp, 
     function (href) { 
      var partial = href.length<10 ? href : href.substring(0,10) + "..."; 
      return "<a href='" + href + "' target='_blank'>"+ partial + "</a>"}); 
} 



replaceURLWithHTMLLinks("http://www.example.com/IAMAVERYLONGLINKWITHMORESTUFF"); 

jsfiddle