2012-02-06 9 views
13

https://github.com/maranomynet/linkifyQuando si utilizza il plugin JQuery Linkify, come posso troncare l'url?

Sto usando questo plug-in. Funziona, e va tutto bene. Ma c'è un'opzione che posso inserire in modo che se la lunghezza dell'URL è più lunga di "X", quindi troncarla e aggiungere "..."?

In questo momento gli URL sono così lunghi.

Ho notato nella demo una funzione di callback "handleLinks", ma come la uso?

+0

Se si taglia il collegamento, sarà inutile come collegamento ma se si desidera visualizzarlo in questo modo è possibile implementare altri plugin jQuery per implementarlo. – NAVEED

risposta

9

Hai ragione, è possibile utilizzare la funzione di callback handleLinks. Ad esempio, ho scritto semplici funzionalità che ti servono:

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

tronca i collegamenti se hanno più di 10 caratteri. È possibile modificare questo script in base alle proprie esigenze.

+4

Potrebbe non essere necessario, ma sarei tentato di aggiungere 'link [i] .title = tmpLink;' solo per essere sicuro che ci sia un mezzo attraverso il quale l'utente può vedere l'URL completo (so che è visibile nello stato barra nella parte inferiore dello schermo, ma anche così ...). –

3

Per l'URL troncato, ho scelto di abbreviare nel mezzo, in quanto il dominio e il file sono in genere più importanti del percorso della directory.

Scattata e adattata per questa domanda dal mio GitHub fork della Libreria JavaScript di 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; 
} 

Esempio di accorciare un URL così la stringa risultante è 20 caratteri:

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' 

Nota: questo codice è stato solo riletti e non unità testata. Il Sugar implementation è stato unit tested, tuttavia.

Problemi correlati