Chciałbym obciąć dynamicznie ładowany ciąg przy użyciu prostego JavaScript. To adres URL, więc nie ma spacji i oczywiście nie obchodzą mnie granice słów, tylko znaki.
Oto co mam:
var pathname = document.referrer; //wont work if accessing file:// paths
document.getElementById("foo").innerHTML = "<a href='" + pathname +"'>" + pathname +"</a>"
javascript
truncate
Pion
źródło
źródło
Odpowiedzi:
Użyj metody podciągowej :
Więc w twoim przypadku:
źródło
length
- zwraca puste.toString().
aby przekonwertować ją na ciąg, którysubstring()
może obsłużyć.tak, podciąg. Nie musisz robić Math.min; podciąg z indeksem dłuższym niż długość łańcucha kończy się na oryginalnej długości.
Ale!
Jest to błąd. A co jeśli document.referrer miałby apostrof? Lub różne inne znaki, które mają specjalne znaczenie w HTML. W najgorszym przypadku kod atakującego w witrynie odsyłającej może wstrzyknąć JavaScript do Twojej strony, co jest luką w zabezpieczeniach XSS.
Chociaż można ręcznie uciec przed postaciami w nazwie ścieżki, aby temu zapobiec, jest to trochę uciążliwe. Lepiej jest używać metod DOM niż majstrować przy łańcuchach innerHTML.
źródło
Pomyślałem, że dam Sugar.js o . Ma metodę obcięcia, która jest całkiem sprytna.
Z dokumentacji :
Przykład:
Wynik:
źródło
Sugar is a Javascript library that extends native objects
… Rozszerzanie obiektów natywnych w JavaScript jest ogólnie uważane za zły pomysł ™.Poniższy kod obcina ciąg i nie dzieli słów, a zamiast tego odrzuca słowo, w którym nastąpiło obcięcie. Całkowicie oparte na źródle Sugar.js.
źródło
Oto jedna metoda, której możesz użyć. Oto odpowiedź na jedno z wyzwań FreeCodeCamp:
źródło
Zaktualizowana wersja ES6
źródło
Tak,
substring
działa świetnie:źródło
na wypadek, gdybyś chciał skrócić słowo.
źródło
źródło