2012-02-06 17 views
13

https://github.com/maranomynet/linkifyAl usar el complemento JQuery Linkify, ¿cómo trunco ​​la URL?

Estoy usando este complemento. Funciona, y todo está bien. Pero, ¿hay alguna opción que pueda enchufar, de modo que si la longitud de la URL es más larga que "X", trunque y agregue "..."?

En este momento, las URL son tan largas.

Noté en la demostración que hay una función de devolución de llamada "handleLinks", pero ¿cómo la uso?

+0

Si corta el enlace, será inútil como un enlace, pero si desea visualizarlo de esta manera, puede implementar otro plugin jQuery para implementarlo. – NAVEED

Respuesta

9

Tiene razón, puede usar la función de devolución de llamada handleLinks. Por ejemplo, escribí simple funcional que necesita:

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

Trunca los enlaces si tienen más de 10 caracteres. Puede modificar este script según sus necesidades.

+4

Puede ser innecesario, pero estaría tentado de agregar 'enlaces [i] .title = tmpLink;' solo para asegurarme de que hay un medio por el cual el usuario puede ver la URL completa (sé que está visible en el estado barra en la parte inferior de la pantalla, pero aun así ...). –

3

Para el truncado de URL elijo acortarme en el medio, ya que el dominio y el archivo suelen ser más importantes que la ruta del directorio.

Tomado y adaptado para esta pregunta de mi GitHub fork de Andrew Plummer's JavaScript Library 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; 
} 

Ejemplo de acortar una URL por lo que la cadena resultante es de 20 caracteres de longitud:

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: este código sólo ha sido corregidos y no unidad probada. El Sugar implementation ha sido unit tested, sin embargo.

Cuestiones relacionadas