Как вставить тег в нужное место div-a
У меня есть <div id="d" contenteditable="true">какой-то текст</div>
И есть кнопка <button onClick="Bold()">Bold</button> Требуется при нажатии на кнопку (т.е. при вызове функции Bold) вставлять теги <b></b> в то место, этого div-a, где находится курсор Вот такая сложная задача. :yes: |
Определить элемент под курсором несложно, примеров много.
Единственная сложность-ваш див, если содержит текстовую информацию, например 12345678 то для определения, над каким именно символом расположено, каждый символ должен быть отдельным элементом в DOM, т.е. проходитесь и получаете что-то типа <span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span> |
Цитата:
|
Перед отправкой структуру дива можно почистить от ненужных вам span-ов.
|
Хотя, я тут подумал... Может как раз перед отправкой обработать текст и удалить ненужные теги... Ну, что ж, спасибо за решение. Хотя бы так.
Но неужели не существует способа точно определить в каком месте текста в div-e находится курсор? P.S. Не заметил Вашего предыдущего сообщения :) |
Нет, отчего же. Координаты вы можете получить, но и только, эта информация бесполезна. То есть вы не сможете в структуру DOM вставить нужный вам элемент в точку (122,834)
|
Да, похоже, это единственный способ. Еще раз спасибо.
|
Rootpassword, что за бредни?
В нормальных браузерах есть rangeOffset и rangeParent: <div style="cursor:pointer" onclick = "nextSibling.data += event.rangeParent.data.charAt( event.rangeOffset ) + ', ';"> <b><i>Такие </i>дела,</b> братюня. </div> clicked: А в осле наверняка есть аналоги. Если вы чего-то не знаете или не умеете, это совершенно не значит что такого не существует. Заморочили голову человеку. =( |
Aetae, да, для MSIE есть аналог, нашел. Для Хрома и Сафари вроде, тоже есть какие-то костылики. Будем разбираться, спасибо большое. :)
|
И как, позвольте поинтересоваться, вы будете вставлять новый элемент в произвольное место страницы, если insertBefore хочет ссылку на нод, а пятый текстовый символ нодом не является?
|
Часовой пояс GMT +3, время: 20:33. |