Как в JavaScript вставить спецсимвол в DOM-модель
Андрей ZerkellaОпубликовано 7.11.2007 в Разработка
Есть некоторые вещи, которые лежат наверху, но глаз почему-то шарит внизу, слева, справа или даже еще выше. Вот одна из таких вещей, которые меня всегда интересовали, был следующий вопрос: как в 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-ом.
Приятной разработки ![]()
Понравилась статья? Подпишись на обновления по RSS/E-mail



А можно и так
var node = document.createTextNode(' ');
document.body.appendChild(node);
Так можно добавить обычный пробел. Интересовал именно неразрывный
блин, этот вордпресс как всегда глючит в самых необычных местах!
——————-
Так можно добавить обычный пробел. Интересовал именно неразрывный
А это и есть неразрывный
Привыкайте к Юникоду.
А, вот вы как
Очень неудобно писать сразу в Юникоде - при переноске текстовых файлов и правке их в самых различных редакторах (что обязательно будут делать) это потеряется обязательно.
Ну кирилицу вы же пишите символами а не кодами. И немцы, например, умляуты тоже не кодами пишут. Редактор с поддержкой UTF-8 сейчас найти не сложно
PS: Хотя я конечно согласен что не всегда это нужно. В случае с пробелом невизуально получается. Тут больше от задачи зависит, нужна эта визуальность, или нет.
> В случае с пробелом невизуально получается
Ага, я про это и говорю.
> Тут больше от задачи зависит, нужна эта визуальность, или нет.
Согласен. Но всегда лучше перестраховаться
Зато насколько проще писать
Под виндой: Alt+160
Под иксами: Compose,Space,Space
Ставь куда хочу
Спасибо за статью, для меня она сейчас актуальна.
Думаю, всё таки проще писать не
String.fromCharCode(160), а"\u00A0". То есть задать символ ка 16-ричную константу.Юрий, спасибо за “\u00A0″!!!
Юрий, спасибо еще раз