Me gustaría truncar una cadena cargada dinámicamente usando JavaScript directo. Es una url, por lo que no hay espacios, y obviamente no me importan los límites de las palabras, solo los caracteres.
Esto es lo que obtuve:
var pathname = document.referrer; //wont work if accessing file:// paths
document.getElementById("foo").innerHTML = "<a href='" + pathname +"'>" + pathname +"</a>"
javascript
truncate
Beto
fuente
fuente
Respuestas:
Use el método de subcadena :
Entonces en tu caso:
fuente
length
- devuelve vacía.toString().
para convertirla en una cadena quesubstring()
pueda manejar.Sí, subcadena. No necesitas hacer un Math.min; La subcadena con un índice más largo que la longitud de la cadena termina en la longitud original.
¡Pero!
Esto es un error. ¿Qué pasa si document.referrer tiene un apóstrofe? O varios otros caracteres que tienen un significado especial en HTML. En el peor de los casos, el código del atacante en el referente podría inyectar JavaScript en su página, que es un agujero de seguridad XSS.
Si bien es posible escapar de los caracteres en pathname manualmente para evitar que esto suceda, es un poco molesto. Es mejor usar métodos DOM que jugar con cadenas innerHTML.
fuente
Pensé en darle una mención a Sugar.js . Tiene un método truncado que es bastante inteligente.
De la documentación :
Ejemplo:
Salida:
fuente
Sugar is a Javascript library that extends native objects
... La extensión de objetos nativos en JavaScript generalmente se considera una mala idea ™.El siguiente código trunca una cadena y no dividirá las palabras, y en su lugar descarta la palabra donde ocurrió el truncamiento. Totalmente basado en la fuente Sugar.js.
fuente
Aquí hay un método que puede usar. Esta es la respuesta para uno de los desafíos de FreeCodeCamp:
fuente
Versión ES6 actualizada
fuente
Sí,
substring
funciona muy bien:fuente
en caso de que quieras truncar por palabra.
fuente
fuente