Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Координаты выделенного слова или координаты после двойного нажатие на слово (https://javascript.ru/forum/events/36713-koordinaty-vydelennogo-slova-ili-koordinaty-posle-dvojjnogo-nazhatie-na-slovo.html)

olexand777 25.03.2013 15:35

Координаты выделенного слова или координаты после двойного нажатие на слово
 
Задача состоит в том, что мне нужно после двойного нажитя на слово вивести над ним окошко.
По идеи мне нужно узнать координаты этого слова...
Пробовал сделать через createRange, но он по ходу не на всех браузерах работает

dmitriymar 25.03.2013 16:10

Цитата:

Сообщение от olexand777
Задача состоит в том, что мне нужно после двойного нажитя на слово вивести над ним окошко.
По идеи мне нужно узнать координаты этого слова...
Пробовал сделать через createRange, но он по ходу не на всех браузерах работает

а координаты курсора, при двойном клике, значит не находятся над словом , и не входят в диапазон занимаемый словом?:-?

olexand777 25.03.2013 16:37

Канечно входять, но я же не знаю сам размер текста, его длину...
Мне нужно чтобы ококшко было четко над текстом...
У меня уже по сути задача такого, чтобы окутать слово, по которому я кликунул, в какой-то <span>. Помогите уже єто реализовать...

dmitriymar 25.03.2013 19:04

Цитата:

Сообщение от olexand777
У меня уже по сути задача такого, чтобы окутать слово, по которому я кликунул, в какой-то <span>. Помогите уже єто реализовать...

1 тебе никто не обязан.

получи выделенный текст
найди его в документе регуляркой, или методом поиска подстроки
Замени найденное, тем что искал ,обёрнутым в span
Получи верхнюю границу span
всё

danik.js 25.03.2013 19:27

В хроме работает:
<!DOCTYPE html>
<style>
    span{
        background: rgba(214, 255, 0, 0.67);
    }
</style>
<p>Кликни по любому слову!</p>
<script>
    document.ondblclick = function() {
        var selection = getSelection();
        if (selection.type == 'Range' && selection.rangeCount > 0) {
            var range = selection.getRangeAt(0);
            range.surroundContents(document.createElement('span'));
        }
    }
</script>

Кстати в нем также есть getBoundingClientRect

olexand777 25.03.2013 20:48

Спасибо большое...

olexand777 25.03.2013 21:14

danik.js,
Я уже задолбал вас, извинните пожалуйста, но хочу еще спросить есть что-то что противоположно surroundContents?

danik.js 25.03.2013 21:32

Цитата:

Сообщение от olexand777
есть что-то что противоположно surroundContents?

Это как?

olexand777 25.03.2013 23:14

danik.js,
что бы после того як я все сделаю... убрать span, который утворился там...

danik.js 26.03.2013 07:25

Что-то типа
span.parentNode.replaceChild(span, document.createTextNode(span.textContent || span.innerText || ''))

Может быть можно иначе сделать.


Часовой пояс GMT +3, время: 22:05.