Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Выделять текст БЕЗ удерживания ЛКМ. (https://javascript.ru/forum/events/56286-vydelyat-tekst-bez-uderzhivaniya-lkm.html)

рони 08.06.2015 23:42

Teamur,
добавил костыль для выделения справа на лево , но возможно есть более нормальный метод
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
 <p id="content">Это <b>нереально</b> осуществить?</p>
 <script>
var s = [], d = document.getElementById("content"), el;
function setSelect() {
    var a = window.getSelection(),
        c = a.anchorOffset;
    if (s.length) {
        var b = document.createRange();
        var pos = s.shift();
        b.setStart(el, pos);
        b.setEnd(a.anchorNode, c);
        if (!b.toString()) {
        b.setStart(a.anchorNode, c);
        b.setEnd(el, pos);
        }
        a.removeAllRanges();
        a.addRange(b)
    } else {s.push(c); el = a.anchorNode}
};
d.onclick = setSelect
 </script>

</body>

</html>

Teamur 09.06.2015 06:21

Огромное спасибо! Подскажите пожалуйста куда копать дальше, чтобы усовершенствовать его? Может кто-то предложит другие варианты?

Sigizmund2012 09.06.2015 08:34

Цитата:

Сообщение от рони (Сообщение 374350)
когда вы это сотворите програмно - будут для вас как семечки :dance:

var e = $.Event("keydown", { keyCode: 16}); 
$("body").trigger(e);

А так не прокатит?

рони 09.06.2015 09:00

Sigizmund2012,
попробуйте сделать рабочий макет ... я плохо обьясняю, но вызов обработки события и само событие, разные фрукты.

рони 09.06.2015 09:17

Sigizmund2012,
копать надо сюда http://habrahabr.ru/post/114244/

Teamur 09.06.2015 19:51

Было бы просто супер, если бы после первого клика (установки курсора), выделение было бы видно (шло за курсором, как при обычном выделении), а то непонятно началось оно или нет! Спасибо.

Teamur 10.06.2015 19:08

Рони, спасибо! Желаю вам творческих успехов и отличного настроения, спасибо! Тема закрыта.


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