2012-02-06 16 views
13

https://github.com/maranomynet/linkifyJQuery Linkify eklentisini kullanırken, URL'yi nasıl kırpırım?

Bu eklentiyi kullanıyorum. Çalışıyor ve her şey yolunda. Ama içine takabildiğim bir seçenek var, böylece eğer url uzunluğu "X" den daha uzunsa, o zaman onu kırpın ve "..." yi ekleyin.

Şu anda URL'ler çok uzun.

Demoda bir "handleLinks" geri çağırma işlevi var, ancak bunu nasıl kullanırım?

+0

Bağlantıyı kesecekseniz bağlantı olarak işe yaramıyor, ancak bu şekilde görüntülemek istiyorsanız, bunu uygulamak için başka bir jQuery eklentisi uygulayabilirsiniz. – NAVEED

cevap

9

Haklısınız, handleLinks geri arama işlevini kullanabilirsiniz. onlar daha uzun 10 karakterden eğer bağlantıları keser

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) + '...'; 
     } 
    } 
} 

: Örneğin Sana ihtiyacım kadar basit işlevsel yazdı. Bu komut dosyasını ihtiyaçlarınız doğrultusunda değiştirebilirsiniz.

+4

Gereksiz olabilir, ancak 'linkler [i] .title = tmpLink; eklemek için cazip olmalıyım, sadece kullanıcının tam URL'yi görebileceği bir araç olduğundan emin olmak istiyorum (Durumda görünür olduğunu biliyorum Ekranın altındaki çubuk, ama hatta ...). –

3

URL'yi kesmek için Etki alanı ve dosya genellikle dizin yolundan daha önemli olduğundan, kısaltmayı seçiyorum.

Bu soru için alınan ve uyarlanmış olan Andrew Plummer'ın GitHub fork adresinden Sugar.

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' 

Not: Sonuç dizesini öylesine bir Url kısaltma

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; 
} 

Örnek uzunluğunda 20 karakter bu kod yalnızca test kanıt okuma ve birim olmuştur. Bununla birlikte, Sugar implementation, unit tested olmuştur.

İlgili konular