Украинское сообщество программистов

Как в 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, то есть "&nbsp;"
var node = document.createTextNode(String.fromCharCode(160));
document.body.appendChild(node);
</script>

Коды других символов приведены в табличке W3C — ее откопал позже, когда надоело задавать в HTML нужный символ, а потом выводить его код alert-ом.

Приятной разработки ;)

Теги: ,

1 звезда2 звезды3 звезды4 звезды5 звезд (2 голосов, средний: 5 из 5)
Загрузка ... Загрузка ...
Распределение голосов

Понравилась статья? Подпишись на обновления по RSS/E-mail

Подписаться, не оставляя комментарий

Все комментарии (11) к “Как в JavaScript вставить спецсимвол в DOM-модель” RSS

  1. rushman

    А можно и так ;)

    var node = document.createTextNode(' ');
    document.body.appendChild(node);

  2. Андрей Zerkella

    Так можно добавить обычный пробел. Интересовал именно неразрывный  

  3. Андрей Zerkella

    блин, этот вордпресс как всегда глючит в самых необычных местах!
    ——————-

    Так можно добавить обычный пробел. Интересовал именно неразрывный &nbsp;

  4. rushman

    А это и есть неразрывный :)

    Привыкайте к Юникоду.

  5. Андрей Zerkella

    А, вот вы как :) Очень неудобно писать сразу в Юникоде – при переноске текстовых файлов и правке их в самых различных редакторах (что обязательно будут делать) это потеряется обязательно.

  6. rushman

    Ну кирилицу вы же пишите символами а не кодами. И немцы, например, умляуты тоже не кодами пишут. Редактор с поддержкой UTF-8 сейчас найти не сложно :)

    PS: Хотя я конечно согласен что не всегда это нужно. В случае с пробелом невизуально получается. Тут больше от задачи зависит, нужна эта визуальность, или нет.

  7. Андрей Zerkella

    > В случае с пробелом невизуально получается
    Ага, я про это и говорю.

    > Тут больше от задачи зависит, нужна эта визуальность, или нет.
    Согласен. Но всегда лучше перестраховаться :)

  8. rushman

    Зато насколько проще писать :)

    Под виндой: Alt+160
    Под иксами: Compose,Space,Space

    Ставь куда хочу ;)

  9. Юрий

    Спасибо за статью, для меня она сейчас актуальна.
    Думаю, всё таки проще писать не String.fromCharCode(160), а
    "\u00A0". То есть задать символ ка 16-ричную константу.

  10. elke

    Юрий, спасибо за “\u00A0″!!!

  11. Eduard

    Юрий, спасибо еще раз

Оставить комментарий

Указать свой сайт могут только зарегистрированные пользователи. Регистрация или вход.

Архив

Добавить статью

Станьте автором нашего сайта!

Какие материалы подходят для публикации? — Такие.

Присылайте статьи на editors@developers.org.ua.

Подробнее.

Популярные теги

Все теги

Комментарии

Последние комментарии

интернет магазин бытовая техника магазин Laptoper