Ich möchte eine dynamisch geladene Zeichenfolge mit reinem JavaScript abschneiden. Es ist eine URL, daher gibt es keine Leerzeichen, und Wortgrenzen sind mir offensichtlich egal, nur Zeichen.
Folgendes habe ich bekommen:
var pathname = document.referrer; //wont work if accessing file:// paths
document.getElementById("foo").innerHTML = "<a href='" + pathname +"'>" + pathname +"</a>"
javascript
truncate
Bob
quelle
quelle
Antworten:
Verwenden Sie die Teilzeichenfolgenmethode :
Also in deinem Fall:
quelle
length
- gibt leer zurück.toString().
, um sie in eine Zeichenfolge zu konvertieren,substring()
die verarbeitet werden kann.ja, Teilzeichenfolge. Sie müssen keine Math.min ausführen. Teilzeichenfolge mit einem längeren Index als die Länge der Zeichenfolge endet mit der ursprünglichen Länge.
Aber!
Das ist ein Fehler. Was wäre, wenn document.referrer ein Apostroph hätte? Oder verschiedene andere Zeichen, die in HTML eine besondere Bedeutung haben. Im schlimmsten Fall kann der Angreifer-Code im Referrer JavaScript in Ihre Seite einfügen, was eine XSS-Sicherheitslücke darstellt.
Es ist zwar möglich, den Zeichen im Pfadnamen manuell zu entkommen, um dies zu verhindern, aber es ist ein bisschen schmerzhaft. Sie sind besser dran, DOM-Methoden zu verwenden, als mit innerHTML-Strings herumzuspielen.
quelle
Ich dachte, ich würde Sugar.js erwähnen. Es hat eine abgeschnittene Methode, die ziemlich klug ist.
Aus der Dokumentation :
Beispiel:
Ausgabe:
quelle
Sugar is a Javascript library that extends native objects
… Das Erweitern nativer Objekte in JavaScript wird im Allgemeinen als schlechte Idee angesehen.Der folgende Code schneidet eine Zeichenfolge ab und teilt keine Wörter auf. Verwerfen Sie stattdessen das Wort, bei dem die Kürzung aufgetreten ist. Völlig basierend auf der Quelle von Sugar.j.
quelle
Hier ist eine Methode, die Sie verwenden können. Dies ist die Antwort auf eine der FreeCodeCamp-Herausforderungen:
quelle
Aktualisierte ES6-Version
quelle
Ja,
substring
funktioniert super:quelle
für den Fall, dass Sie nach Wort abschneiden möchten.
quelle
quelle