С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 8

TextContent

27.05.2016, 16:50. Показов 4612. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При использовании textContent опускаются все теги, включая <p>, <div> и прочие.
При получении выделения все переносы от <p> просто исчезают.
Пример:
HTML5
1
2
3
4
5
<div id='element'>
    <p>First text</p>
    <p>Next text</p>
    <p>That text</p>
</div>
Получаем выделенный текст таким образом (пишу с телефона, неудобно, нет возможности получить доступ к ПК, так что сразу прошу прощения за ошибки
JavaScript
1
var text = document.getSelection().textContent;
Если выделить, например, две последние строки, то мы получаем просто слитный текст, т.е.:
Next textThat text

Как этого избежать?
innerText, innerHTML и outerHTML выдают undefined.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.05.2016, 16:50
Ответы с готовыми решениями:

textContent не работает в IE
Здравствуйте. Есть следующий скрипт, который добавляет пункт в меню: var menu = document.getElementById('menu'); var li1 =...

Изменение textContent
Работаю над приложением на nw.js оформление состряпал, а вот с js какие то запарки. Решил посмотреть как там функции работают и о боже, я...

Textcontent и innertext
Все еще преобразовываю таблицу html в Json формат () textContent возвращает innerText возвращает {&quot;...

9
Философ-разговорник
 Аватар для Padonak
1066 / 391 / 120
Регистрация: 20.02.2016
Сообщений: 884
Записей в блоге: 1
27.05.2016, 17:48
Попробуйте так:

JavaScript
1
var text = document.getSelection().textContent.replace(/\n/g,'<br />');
1
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
27.05.2016, 18:35
Replicatorfrom, это в каком браузере у вас свойство textContent для объекта Range выдаёт хоть что-то, отличное от undefined?

свойство textContent, как и innerText имеется только у ноды


для получения выделенного текста используйте метод toString ()
1
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 8
28.05.2016, 11:01  [ТС]
Извините, что неверно передал свою мысль, и нагородил мусора в начале темы.
Всё заключается в том, что переносы строк в textarea заключаются исключительно в <p> теге.

Код в JS. Что с textContent, что с toString() - результат одинаков, но с toString() добавляется пробел между словами.
JavaScript
1
2
3
4
5
var thatt = document.getElementsByTagName('iframe')[0].contentDocument;
var mess = thatt.getSelection().toString();
var newNode = document.createTextNode('[media=hide..]' + mess + '[/media]');
thatt.getSelection().getRangeAt(0).deleteContents();
thatt.getSelection().getRangeAt(0).insertNode(newNode);
Кусок HTML:
HTML5
1
2
3
4
5
6
<body contenteditable="true" dir="LTR" style="overflow-y: hidden; min-height: 99px;">
    <p>Текст раз</p>
    <p>Второй текст</p>
    <p>Третий текст</p>
    <p>Четвёртый</p>
</body>
Выглядит так:
HTML5
1
2
3
4
Текст раз
Второй текст
Третий текст
Четвёртый
После воздействия JS кода HTML изменяется на такой.
В данном случае, мы выделили текст от слова "текст" во второй строке до 4-ой буквы "в" в четвёртой строке.
HTML5
1
2
3
4
5
6
7
<body contenteditable="true" dir="LTR" style="overflow-y: hidden; min-height: 99px;">
    <p>Текст раз</p>
    <p>Второй [media=hide;]текст
    Третий текст
    Четв[/media]</p>
    <p>ёртый</p>
</body>
И выглядит это так:
HTML5
1
2
3
Текст раз
Второй [media=hide;]текст Третий текст Четв[/media]
ёртый
Как можно пофиксить эту аномалию?

Заранее спасибо!

Добавлено через 11 часов 59 минут
Поправка, текст в кавычках, который мы пытались выделить
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
28.05.2016, 13:46
о каких добавлениях вы тут пишете?
давайте так сделаем:

держите код -- покрутите его:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<script>
document.onmouseup = function ()
{
document.getElementById ('inf').value = window.getSelection().toString ();
}</script>
<body>
<div>
    <p>здесь выделяем
    <p>часть текста
    <p> и потом смотрим на результат в текстовой области
</div>
<hr>
<textarea id="inf" style="width: 50%; height: 30%"></textarea>
и потом расскажите -- какие конкретно пробелы и переносы строк в текстовой области вас не устраивают
1
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 8
28.05.2016, 15:48  [ТС]
Понял, но мы о разном.
Одно дело - textarea. Другое дело - body.
Вот пример, который поставит все точки над "i": https://jsfiddle.net/xheqf8Ly/1
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
28.05.2016, 16:07
Цитата Сообщение от Replicatorfrom Посмотреть сообщение
Вот пример, который поставит все точки над "i":
и в чем проблемы?
в текстареа переносы строк \n визуально видны именно как переносы строк

в плайн-тегах (включая <body>):
1. переносы строк преобразуются в единичные пробелы
2. многократные пробелы преобразуются в единичные пробелы

и это всё естественно - так работают все браузеры
что именно вам не нравится в браузерах?
плиз, конкретно, по пунктам
1
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 8
28.05.2016, 16:15  [ТС]
Хорошо, постараюсь поподробней объяснить (никогда не умел объяснять).

Пишу расширение для форума, который создаёт хайд с определёнными параметрами.
Нюанс в том, что у самого форума при выделении текста и вставки хайда весь хайд замещается на 1-ую строку, повторяющуюся ровно то количество раз, сколько было всего строк. В этом то и была идея написать расширение.
Мой вариант, описанный в 4-ом сообщении, работает прекрасно, за исключением одного: переносы строк не работают в теге <body>.
Как можно реализовать этот перенос? Спасибо заранее за ответ.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
28.05.2016, 16:23
ответ у вас уже есть выше, от коллеги Padonak -- меняйте символы \n на теги <br> методом replace ()
1
0 / 0 / 0
Регистрация: 27.05.2016
Сообщений: 8
28.05.2016, 17:56  [ТС]
И получаю такую ахинею в коде:
HTML5
1
2
3
4
<body contenteditable="true" dir="LTR" style="overflow-y: hidden; min-height: 99px;">
    <p>Первая [media=hide;]строка&lt;br /&gt;Вторая строка&lt;br /&gt;Третья [/media]</p>
    <p>строка</p>
</body>
JS:
JavaScript
1
2
3
4
5
var thatt = document.getElementsByTagName('iframe')[0].contentDocument;
var mess = thatt.getSelection().toString().replace(/\n/g,'<br />'); ;
var newNode = document.createTextNode('[media=hide..]' + mess + '[/media]');
thatt.getSelection().getRangeAt(0).deleteContents();
thatt.getSelection().getRangeAt(0).insertNode(newNode);
Что с <p>, <br />, что с <br> - одно и то же.
Это можно перекодировать как-то?

Добавлено через 1 час 27 минут
помогите!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.05.2016, 17:56
Помогаю со студенческими работами здесь

Ошибка с textContent
Здравствуйте, пытался найти в интернете похожею проблему не получилось. у меня есть такой кусок кода let resultObj = { ...

TextContent, innerHTML, text() и value
Есть div resultField , в него необходимо записать данные из переменной, но получается это только при помощи value. Когда необходимо через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru