Вложения котировок в JavaScript/HTML
Как вы вставляете кавычки в HTML за пределами второго уровня? Насколько мне известно, существует только 2 типа кавычек: single (') и double ("). Я знаю об экранировании с помощью косой черты - вам нужно скрыться в коде, но это экранирование не будет работать на уровне браузера Что такое принятый метод, чтобы обойти что-то вроде следующего?
<p onclick="exampleFunc('<div id="divId"></div>');">Some Text</p>
Этот код печатает в браузере:
');" > Some Text
Ответы
Ответ 1
Вам нужно использовать правильное экранирование/кодирование. Либо в HTML с использованием ссылок на символы:
<p onclick="exampleFunc('<div id="divId"></div>');">Some Text</p>
Или в JavaScript с использованием последовательностей escape-последовательности строк:
<p onclick="exampleFunc('\x3Cdiv\x20id\x3D\x22divId\x22\x3E\x3C/div\x3E');">Some Text</p>
Ответ 2
Изменить: это не решение для JavaScript в HTML, а только для JavaScript. Мой плохой...
eval('eval(\"eval(\\\"alert(\\\\\\\"Now I\\\\\\\\\\\\\\\'m confused!\\\\\\\")\\\")\")');
Ссылка. Это "рекурсивное побег".
Ответ 3
const _advanceEscapeCount = (escapeCount, level) => {
const linearPosition = Math.log(escapeCount + 1) / Math.log(2);
return Math.pow(2, (linearPosition + level)) - 1;
};
const deepNestQuotes = (str, level) => {
for (let i = str.length - 1; i >=0 ; i--) {
if (str[i] === '"') {
const index = i;
let count = 0;
while (str[i - 1] === '\\') {
count++;
i--;
}
const firstPart = str.substr(0,index - count);
const lastPart = str.substr(index,str.length);
const escapedCount = _advanceEscapeCount(count, level);
str = firstPart + '\\'.repeat(escapedCount) + lastPart;
//str = firstPart + escapedCount + lastPart;
}
}
return str;
};
deepNestQuotes("1st-level-begin \"2nd-begin \\\"3rd-begin \\\\\\\"4th level\\\\\\\" 3rd-end\\\" 2nd-end\" 1st-level-end", 1);
deepNestQuotes("1st-level-begin \"2nd-begin \\\"3rd-begin \\\\\\\"4th level\\\\\\\" 3rd-end\\\" 2nd-end\" 1st-level-end", 2);
Ответ 4
вам нужно избежать символов, используя \
чтобы ваш код выглядел как
<p onclick="exampleFunc('<div id=\"divId\"></div>');">Some Text</p>
Ниже приведена информация о Специальные символы