Блог разработчиков

Как в 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-ом.

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

top of hotblogs.org.ua

Теги: ,

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

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

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

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

  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 говорит:

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

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

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

Архив

Вакансии rss icon

Все вакансии

Комментарии