Есть ли существенная разница между innerHTML и использованием createTextNode для заполнения промежутка?
Название довольно ясно: есть ли существенная разница между innerHTML
а также createTextNode
(используется с Append
) заполнить промежуток с текстом?
2 ответа
Конечно. createTextNode
будет избегать любых строк и покажет их как они есть, в то время как innerHTML
может отображать HTML-подобные строки в DOM. Если вы не хотите этого (если вы не уверены, что текст не содержит неэкранированных тегов, например, при непосредственном назначении литерала), вы можете использовать textContent
(или же innerText
для IE).
Еще я бы порекомендовал createTextNode
, потому что все браузеры поддерживают его одинаково без каких-либо излишеств.
Делая некоторые исследования онлайн, вот что я нашел. Это должно охватить это на высоком уровне:
элементарныйcreateTextNode(текст) и элем.textContent = text делает то же самое (источник: https://javascript.info/task/createtextnode-vs-innerhtml)
В то время как textContent возвращает полный текст, содержащийся в узле, innerText возвращает только видимый текст, содержащийся в узле. (src: разница между textContent и innerText)
Насколько я понимаю, некоторые манипуляции с innerHTML удаляют все связанные события, поэтому использование createTextNode предпочтительнее.