2012-02-06 6 views
13

https://github.com/maranomynet/linkifyPodczas korzystania z wtyczki JQuery Linkify, w jaki sposób skracać adres URL?

Używam tej wtyczki. Działa i wszystko jest w porządku. Ale czy istnieje opcja, którą mogę podłączyć do niej, aby jeśli długość adresu URL była dłuższa niż "X", skrócić go i dodać "..."?

Teraz adresy URL są tak długie.

Zauważam, że w demo jest funkcja zwrotna "handleLinks", ale jak mogę tego użyć?

+0

Jeśli przerwiesz link, będzie on bezużyteczny jako link, ale jeśli chcesz go wyświetlić w ten sposób, możesz zaimplementować inną wtyczkę jQuery, aby to zaimplementować. – NAVEED

Odpowiedz

9

Masz rację, możesz użyć funkcji zwrotnej handleLinks. Na przykład napisałem prosty funkcjonalny, że trzeba:

handleLinks: function (links) { 
    for (var i = 0, cnt = links.length, tmpLink; i < cnt; i++) { 
     tmpLink = links[i].innerHTML; 
     if (tmpLink.length > 10) { 
      links[i].innerHTML = tmpLink.substr(0, 10) + '...'; 
     } 
    } 
} 

To skraca linki, jeśli dłuższy niż 10 znaków. Możesz modyfikować ten skrypt według swoich potrzeb.

+4

Może to być niepotrzebne, ale chciałbym dodać 'links [i] .title = tmpLink;' po prostu upewnij się, że istnieje sposób, dzięki któremu użytkownik może zobaczyć pełny adres URL (wiem, że jest widoczny w statusie pasek u dołu ekranu, ale mimo to ...). –

3

W przypadku obcinania adresów URL wybieram skrócenie w środku, ponieważ domena i plik są zazwyczaj ważniejsze niż ścieżka do katalogu.

Zrobione i dostosowane do tego pytania z mojej GitHub fork Biblioteki JavaScript Andrew Plummer Sugar.

String.prototype.shorten = function(length, position, countSplitter, splitter) { 
    if (this.length < 1 && length < 1) return String(this); 

    if (!(typeof(splitter) === 'string')) splitter = '...'; 
    if (!(typeof(countSplitter) === 'boolean')) countSplitter = true; 

    var balance = (countSplitter) ? splitter.length : 0; 

    if (length <= balance || this.length <= length) return String(this); 

    // Perform shortening 
    var shortened, beforeSplitter, afterSplitter; 

    if (position == 'left') { 
    afterSplitter = this.substring(this.length - length + balance, this.length - 1); 
    shortened = splitter + afterSplitter; 
    } else if (position == 'right') { 
    beforeSplitter = this.substring(0, length - balance); 
    shortened = beforeSplitter + splitter; 
    } else { 
    beforeSplitter = this.substring(0, Math.ceil((length/2) - (balance/2))); 
    afterSplitter = this.substring(this.length - Math.floor((length/2) - (balance/2)), this.length); 
    shortened = beforeSplitter + splitter + afterSplitter; 
    } 

    return shortened; 
} 

Przykład skracania URL tak powstałego łańcucha wynosi 20 znaków:

var toShorten = 'http://stackoverflow.com/questions/9156458/when-using-jquery-linkify-plugin-how-do-i-truncate-the-url'; 
var shortened = toShorten.shorten(20); // Output: 'http://st...-the-url' 

Uwaga: Ten kod jest tylko do odczytu i nie dowód Urządzenie testowane. Model Sugar implementation został jednak unit tested.

Powiązane problemy