Javascript: экранирование двойных кавычек в HTML - PullRequest
7 голосов
/ 18 декабря 2010

Как я могу предотвратить разбивку HTML images[i].title ниже, если он содержит двойные кавычки?

for ( i=0;i<=images.length-1;i++ ){
    gallery += '<img width="250" height="250" src="' +  images[i].src + '" title="' + images[i].title + '" />';
}

Ответы [ 4 ]

13 голосов
/ 18 декабря 2010

Так как, по-моему, никто не имеет абсолютно правильного ответа:

for ( i=0;i<=images.length-1;i++ ){
    gallery += '<img width="250" height="250" src="' +  images[i].src
               + '" title="' + images[i].title.replace(/\"/g,'&quot;') + '" />';
}

Это заменяет все кавычки, и в итоге вы получаете двойные кавычки, и они представленыв формате HTML, который действителен.

6 голосов
/ 18 декабря 2010

Вы можете использовать метод replace () для экранирования двойных кавычек:

for (var i = 0; i < images.length; ++i) {
    gallery += '<img width="250" height="250" src="' + images[i].src
        + '" title="' + images[i].title.replace(/\"/g, '\\"') + '" />';
}

РЕДАКТИРОВАТЬ: Результатом будет допустимая строка Javascript, но она не будет работать как разметка HTML, потому что анализатор HTML не понимает экранирование обратной косой черты. Вам также придется заменить двойные кавычки одинарными кавычками в заголовке вашего изображения:

for (var i = 0; i < images.length; ++i) {
    gallery += '<img width="250" height="250" src="' + images[i].src
        + '" title="' + images[i].title.replace(/\"/g, "'") + '" />';
}

Или инвертировать типы цитат в разметке:

for (var i = 0; i < images.length; ++i) {
    gallery += "<img width='250' height='250' src='" + images[i].src
        + "' title='" + images[i].title + "' />";
}
2 голосов
/ 02 ноября 2011
var_name.replace(/\"/gi,'%22');

Это тот, кого вы ищете.Даже если ваши цвета выглядят «выключенными» в Visual Studio.

\ выходит за пределы следующей цитаты.Ги заменяет все случаи жизни.

1 голос
/ 18 декабря 2010

Вы можете вызвать replace в строке заголовка:

for ( i=0;i<=images.length-1;i++ ){
    gallery += '<img width="250" height="250" src="' +  images[i].src + '" title="' + images[i].title.replace('"',"'") + '" />';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...