Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Как выделить текст на странице? (https://javascript.ru/forum/css-html/24655-kak-vydelit-tekst-na-stranice.html)

elf2002 09.01.2012 12:20

Как выделить текст на странице?
 
нужно сделать выделение текста в див/спан и т.п. контейнере.
Устроит даже по онклику для конкретного контейнера, если произвольно нельзя.
В сети решения нет.
Посему, если кто подскажет кроссбраузерное решение, с меня приз.

Kolyaj 09.01.2012 12:27

Цитата:

Сообщение от elf2002
В сети решения нет.

http://habrahabr.ru/blogs/javascript/55922/

elf2002 09.01.2012 13:34

Цитата:

Сообщение от Kolyaj (Сообщение 149075)

Ништяк.
Хотя к сожалению, полного решения нет, т.к. у меня задача еще и выделить часть. Но может как-то вывернусь уже сам.
И что интересно, искал примерно неделю. А тут - бац, и все есть и еще и работает.
Пасибо.

Magneto 09.01.2012 14:18

Приз в студию.

elf2002 09.01.2012 14:44

Цитата:

Сообщение от Magneto (Сообщение 149099)
Приз в студию.

не вопрос.
Где-то в районе $5 вполне могу.
Токо надо решение и для частичного выделения текста.

Еще за $5 мне нужно:
• копипаст в contentEditable контейнер без разрывов (в опере глючит, добавляя nbsp при копипасте)
• переход на нужный рядок в контейнере
• нумерация рядков

Еще за $5:
• разметка синтаксиса
• отлов пиксельных координат курсора (для вывода подстановки кода)
• поиск/замена в контейнере

Еще за $5:
• редактирование в contentEditable контейнере в режиме столбцов (без понятия, возможно ли такое)

nerv_ 09.01.2012 23:15

Цитата:

Сообщение от elf2002
нужно сделать выделение текста в див/спан и т.п. контейнере.

Выделение - это найти определенный фрагмент текста и применить к нему форматирование (изменение шрифта, фона, размера и т.п.)?
Цитата:

Сообщение от elf2002
разметка синтаксиса

Если правильно Вас понял, я делал нечто подобное для оформления vba кода здесь, здесь и здесь. Номера строк отключаются по двойному клику. Скрипт еще в бета режиме (если можно так сказать), не оптимизирован.

elf2002 10.01.2012 03:12

Цитата:

Сообщение от nerv_ (Сообщение 149235)
Выделение - это найти определенный фрагмент текста и применить к нему форматирование (изменение шрифта, фона, размера и т.п.)?

нет.
Сделать выделение, как вы выделяете, обведя мышкой, чтобы потом правой кнопкой копировать/удалять етц.

Цитата:

Если правильно Вас понял, я делал нечто подобное для оформления vba кода здесь, здесь и здесь. Номера строк отключаются по двойному клику. Скрипт еще в бета режиме (если можно так сказать), не оптимизирован.
да, токо чтобы код был доступен для редактирования

nerv_ 10.01.2012 12:30

Событие onselect поддерживают <input> и <textarea>.

devote 10.01.2012 14:07

наводишь курсор мыши на текст, жмешь ЛКМ и не отпуская ее, выделяешь что нужно :D

elf2002 11.01.2012 12:32

Цитата:

Сообщение от devote (Сообщение 149324)
наводишь курсор мыши на текст, жмешь ЛКМ и не отпуская ее, выделяешь что нужно :D

вообще-то это форум по js, а не по петросянщине

trikadin 11.01.2012 14:36

Вам же всё уже скинули. Если вы хотите сделать визивиг, то либо делайте его сами, либо раскошеливайтесь побольше, чем на 5 долларов.

elf2002 11.01.2012 15:12

Цитата:

Сообщение от trikadin (Сообщение 149566)
Вам же всё уже скинули.

не всё

Цитата:

Если вы хотите сделать визивиг, то либо делайте его сами, либо раскошеливайтесь побольше, чем на 5 долларов.
а бы взял частями. ;)

trikadin 11.01.2012 16:12

Цитата:

Сообщение от elf2002
не всё

И что вам не скинули?

Цитата:

Сообщение от elf2002
нужно сделать выделение текста в див/спан и т.п. контейнере.

Вам дали ссылку на статью, где в пунте 2.1 - подробное описание того, что вам нужно.

elf2002 11.01.2012 18:06

Цитата:

Сообщение от trikadin (Сообщение 149605)
И что вам не скинули?

"у меня задача еще и выделить часть"
до этого
"если произвольно нельзя"

понимаете, надо еще и часть.
Вот если еще и часть, то с меня однозначно приз :)

Цитата:

Вам дали ссылку на статью, где в пунте 2.1 - подробное описание того, что вам нужно.
Да, и за это огромное спасибо, т.к. я уже отчаялся найти это решение.

trikadin 12.01.2012 00:27

Цитата:

Сообщение от elf2002
"у меня задача еще и выделить часть"
до этого
"если произвольно нельзя"

понимаете, надо еще и часть.

Часть чего, извиняюсь? Буквы?

elf2002 12.01.2012 02:18

Цитата:

Сообщение от trikadin (Сообщение 149749)
Часть чего, извиняюсь? Буквы?

@выделение текста в див/спан и т.п. контейнере@

прим. перев.: часть текста. ;)

trikadin 12.01.2012 02:53

elf2002, ну так там же есть всё!

<html>
<head>
<script>
function selectSomeText(){
 var range= document.createRange();
 var elem= document.getElementById("span");
 var sel = window.getSelection();
 
 range.setStart(elem.firstChild, 1);
 range.setEnd(elem.firstChild, 5);
 sel.removeAllRanges();
 sel.addRange(range);
};
</script>
</head>
<body>
 <span id="span">atexta</span><br />
<button onclick="selectSomeText()">select some text</button>
</body>
</html>


С оговоркой, правда, что это для новых браузеров.

Aetae 12.01.2012 02:55

Хе-хе, я такой-же пример сделал:
<!DOCTYPE HTML>
<html>
<body>Наведи на меня.
<script>
var range = document.createRange(),
    select = window.getSelection(),
    node = document.body.firstChild;
range.setStart(node, 7);
range.setEnd(node, 9);
document.body.onmouseover=function(){
  select.addRange(range)
}
document.body.onmouseout=function(){
  select.removeRange(range)
}
</script>
</body>
</html>


А в дебри ie никто лезть не хочет.))

trikadin 12.01.2012 03:01

Цитата:

Сообщение от Aetae
А в дебри ie никто лезть не хочет.))

Ну его в задницу.

Кстати, всё забываю выяснить - в девятке есть нормальная поддержка Range?

elf2002 12.01.2012 03:15

Спасибо, пацаны, попробуем.
Авось что-то и получится.

devote 12.01.2012 03:27

Цитата:

Сообщение от trikadin
Кстати, всё забываю выяснить - в девятке есть нормальная поддержка Range?

нету там Range

хотя может и ошибаюсь... дай те пример для теста, ща попробую открыть в виртуалке

devote 12.01.2012 03:35

Ха... работают оба ваши примера в ИЕ9...


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