Je voudrais tronquer une chaîne chargée dynamiquement en utilisant du JavaScript simple. C'est une URL, donc il n'y a pas d'espaces, et je ne me soucie évidemment pas des limites des mots, juste des caractères.
Voici ce que j'ai:
var pathname = document.referrer; //wont work if accessing file:// paths
document.getElementById("foo").innerHTML = "<a href='" + pathname +"'>" + pathname +"</a>"
Réponses:
Utilisez la méthode de sous - chaîne :
Donc dans votre cas:
la source
length
- retourne vide.toString().
pour le convertir en une chaîne quisubstring()
peut gérer.oui, sous-chaîne. Vous n'avez pas besoin de faire un Math.min; La sous-chaîne avec un index plus long que la longueur de la chaîne se termine à la longueur d'origine.
Mais!
C'est une erreur. Et si document.referrer avait une apostrophe dans? Ou divers autres caractères qui ont une signification particulière en HTML. Dans le pire des cas, le code de l'attaquant dans le référent pourrait injecter du JavaScript dans votre page, ce qui est une faille de sécurité XSS.
Bien qu'il soit possible d'échapper manuellement aux personnages du chemin d'accès pour empêcher cela, c'est un peu pénible. Il vaut mieux utiliser les méthodes DOM que jouer avec les chaînes innerHTML.
la source
Je pensais que je donnerais à Sugar.js une mention à . Il a une méthode tronquée qui est assez intelligente.
De la documentation :
Exemple:
Production:
la source
Sugar is a Javascript library that extends native objects
… L'extension d'objets natifs en JavaScript est généralement considérée comme une Bad Idea ™.Le code suivant tronque une chaîne et ne divisera pas les mots, mais rejettera à la place le mot où la troncature s'est produite. Totalement basé sur la source Sugar.js.
la source
Voici une méthode que vous pouvez utiliser. Voici la réponse à l'un des défis de FreeCodeCamp:
la source
Version ES6 mise à jour
la source
Oui,
substring
fonctionne très bien:la source
au cas où vous voudriez tronquer par mot.
la source
la source