Как в JavaScript вставить спецсимвол в DOM-модель
Есть некоторые вещи, которые лежат наверху, но глаз почему-то шарит внизу, слева, справа или даже еще выше. Вот одна из таких вещей, которые меня всегда интересовали, был следующий вопрос: как в Javascript в DOM-модель документа динамически добавить ноду (node) со спецсимволами вроде « », «–» и так далее.
Хотя по роду работы время от времени и требуется писать взаимодействие DOM-JS, но « » не доставал — всегда достаточно было добавить обычный пробел, а его неразрывная версия спокойно курила в сторонке. До тех пор, пока в одном компоненте вопрос не стал ребром — нужен был только « ».
Что странно — но Yandex и Google не дали ничего. Даже друзья сказали, что этот вопрос их слегка интересовал, но ответа они так и не узнали. И только логические размышления о поведении браузеров и о природе разметки наконец дали решение. Очень простое!
Все спецсимволы с префиксом «&» образуют самые обычные строки текстовых нод, что легко видно в том же инспекторе DOM в Firefox. Соответственно, можно получить Unicode-значение символа в строке методом String.charCodeAt(index)
или по значению получить сам символ методом String.fromCharCode(num)
.
Итого, решение:
<script>
//Добавить в body символ с кодом 160, то есть " "
var node = document.createTextNode(String.fromCharCode(160));
document.body.appendChild(node);
</script>
Коды других символов приведены в табличке W3C — ее откопал позже, когда надоело задавать в HTML нужный символ, а потом выводить его код alert-ом.
Приятной разработки ;)
7 коментарів
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.