Обрезать строку прямо JavaScript

146
задан Brett DeWoody 23 July 2017 в 15:43
поделиться

2 ответа

Используйте метод подстроки :

var length = 3;
var myString = "ABCDEFG";
var myTruncatedString = myString.substring(0,length);
// The value of myTruncatedString is "ABC"

Итак, в вашем случае:

var length = 3;  // set to the number of characters you want to keep
var pathname = document.referrer;
var trimmedPathname = pathname.substring(0, Math.min(length,pathname.length));

document.getElementById("foo").innerHTML =
     "<a href='" + pathname +"'>" + trimmedPathname + "</a>"
314
ответ дан 23 November 2019 в 22:09
поделиться

да, подстрока. Вам не нужно делать Math.min; подстрока с более длинным индексом, чем длина строки, заканчивается на исходной длине.

Но!

document.getElementById("foo").innerHTML = "<a href='" + pathname +"'>" + pathname +"</a>"

Это ошибка. Что, если бы в document.referrer был апостроф? Или различные другие символы, которые имеют особое значение в HTML. В худшем случае код злоумышленника в реферере может внедрить JavaScript на вашу страницу, что является дырой в безопасности XSS.

Хотя можно вручную экранировать символы в имени пути, чтобы предотвратить это, это немного неудобно. Лучше использовать методы DOM, чем возиться со строками innerHTML.

if (document.referrer) {
    var trimmed= document.referrer.substring(0, 64);
    var link= document.createElement('a');
    link.href= document.referrer;
    link.appendChild(document.createTextNode(trimmed));
    document.getElementById('foo').appendChild(link);
}
15
ответ дан 23 November 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: