Положение курсора в строке обычного HTML текста (НЕ input и textarea)
Есть конструкция вида: <div>Некоторый текст</div>
Нужно получить положение курсора в этой строке (номер символа, рядом с которым щёлкнули мышкой) любым способом... |
Вероятно, вам сюда.
|
Можно говнокодом: если текст в диве небольшой, обернуть каждый символ в спан.
|
Trikadin
Я курил этот мануал, но там обязательно нужен выделенный текст, а у нас курсор нулевой длины. Но за русский вариант статьи спасибо - в закладки) FINoM Не настолько любым способом)) |
а если contenteditable? закинул атрибут в тег, взял курсор, удалил атрибут.
может получится. а где такая нужда вылезла?, просто интересно. |
Person
Пробовал такой вариант - не возвращает положение курсора (или, может я чего-то не знаю/не нашёл) Делаю, только не смеяться, очередной wisiwyg. НО! С одинаковыми тегами на выходе во всех барузерах - ничего подобного не нашёл, а очень нужно. Положение курсора - единственная принципиально не решённая проблема. |
И зачем вам это в визивиге?
|
Trikadin
Не очень понял вопрос поэтому отвечаю на всё что понял. Wisiwyg рассчитан на уровень секретарши, а обрабатывать то, что она введёт - мне (нужно отслеживать абзацы - с этим у wisiwyg'ов (браузеров) самая большая проблема). Браузер неизвестен - сейчас немерено доморощенных, если учитывать планшеты и т.п. И под каждый затачивать PHP-оптимизацию - не вариант. Да и возможность добавления кнопки на любой тег без геммороя, тоже совсем не лишняя + полное соответствие тому, что видим и тому что будет после сохранения. |
есть метод document.elementFromPoint(x, y);, с помощью него можно получить элемент находящийся под курсором, а там уже как удобней
|
Monolithed
Мне б такую карму) Боюсь, элемент и символ в строке - разные вещи. При получении элемента получим подобный эффект: http://javascript.ru/forum/events/17...navedenii.html (запустить нижний пример) А при пляске от него - та же самая проблема. |
Есть же "стандартные", давно отлаженные функции для полей, они что не работают? нужно что то специфическое?
Попробуй на fastcoder.ru поспрашивать, trikadin ссылку давал, сам этим пользуюсь, лучше не видел. |
Цитата:
то есть что-то такое: <div><div id="t">Т</div><div id="e">e</div><div id="k>k</div><div id="c">c</div><div id="t2">т</div></div> |
Murmurianez, мне кажется, вот решение твой проблемы:
<html> <body> <div contenteditable="true" id="edDiv"> Текст) </div> <button onclick="return clicker()">Вставить <b></button> <script> function clicker() { var sel= window.getSelection(); var rng= document.createRange() rng.setStart(sel.anchorNode, sel.anchorOffset); rng.setEnd(sel.focusNode, sel.focusOffset); var bi= document.createElement("b"); rng.surroundContents(bi); }; </script> </body> </html> Все методы, которые я тут использовал, описаны в статье, ссылку на которую я отправлял. Ну, и для ie допилишь ф-цию сам. И вообще допилишь её. |
Person
Ссылка то хорошая, да не та... На 2007.fastcoder.ru тоже поспрашиваю... 9xakep FINoM уже предлагал такое решение - текст, даже при использовании своего тега из одной буквы, вырастит нереально (а текст может быть очень большой, да ещё и utf-8), хотя я это могу на сервер и не передавать... Обработка 200Кб x 2 текста - надо подумать ещё раз. Похоже, самое простое решение - самое единственное... Не, не вариант, ещё каждой букве id прописывать. Trikadin Спасибо за старание, но это не то. Мне нужен номер символа и больше ничего. А это стандартный подход к написанию wisiwig, с которым я и борюсь, при котором каждый браузер будет выдавать свою разметку (http://habrahabr.ru/blogs/webdev/107829/) |
Цитата:
|
Автор, возможно если ты разберёшься в коде этой игры, то поймёшь как сделать
http://www.wwk.kiev.ua/squares.html (не реклама) |
Monolithed
Чтобы узнать номер той самой буквы. А как ещё? (Sandr) Не то, символьный и координатный курсор - разные вещи. Но, игруха забавная. Я уж не знаю, спам ты или нет, но мы тут с другом жёстко втянулись - он её себе уже на PSP хочет. Рекорд на двоих - 7.333 А сюжет то какой - про лётчиков... |
Murmurianez, к сожалению, у вас только эти варианты. Use it)
|
Цитата:
|
Trikadin
Зато остальное отсеяли - теперь голову ломать не надо - просто делать и проверять на юзабельность. Monolithed Почитал мануалов - теперь очевидно) Спасибо всем за участие! Удачи! |
Часовой пояс GMT +3, время: 12:16. |