Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Получить выделенный на странице текст (https://javascript.ru/forum/events/39078-poluchit-vydelennyjj-na-stranice-tekst.html)

userball 14.06.2013 13:59

Получить выделенный на странице текст
 
Доброго.

Как получить выделенный на странице текст?

пробую так:
<p>many symbols	</p>
<script>
function that_click() {
	var selected_text= window.getSelection();
	alert(selected_text);
}
</script>
<a onclick="that_click()">click to try</a>


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

P.S. браузер FireFox, для IE другая функция, вычитал уже

Так все же, как получить выделенный текст?

devote 14.06.2013 14:02

Не знаю как у вас но у меня все работает:
<div>Выдели меня мышкой)))))))</div>
<script>
document.onmouseup = function() {
    var selection = window.getSelection();
    alert(selection.toString());
}
</script>

userball 14.06.2013 14:08

Цитата:

Сообщение от devote (Сообщение 256290)
Не знаю как у вас но у меня все работает:
<div>Выдели меня мышкой)))))))</div>
<script>
document.onmouseup = function() {
    var selection = window.getSelection();
    alert(selection.toString());
}
</script>


если повесить на отдельную кнопку клика, что вне элемента, то не пашет:

<div>Выдели меня мышкой)))))))</div>
	<a onclick="click_that()">click</a>
	<script>
	function click_that() {
	    var selection = window.getSelection();
	    alert(selection.toString());
	}
	</script>


Как сделать, что бы работало?

devote 14.06.2013 14:12

Не знаю как у вас, но у меня все хорошо работает:
<div>Выдели меня мышкой)))))))</div>
<script>
document.onmouseup = function() {
    var selectedText = '';
    if (window.getSelection) {
        var selection = window.getSelection();
        selectedText = selection.toString();
    } else if (document.selection) {
        var range = document.selection.createRange();
        selectedText = range.htmlText;
    }

    alert(selectedText);
}
</script>

userball 14.06.2013 14:20

а попробуйте повесить onclick на какой-то элемент и вызвать от туда, заработает?

<div>some text to select</div>
<a onclick="alert(window.getSelection())">click</a>

к примеру, сначала снимается выделение, а после запускается скрипт, как бы сделать, что бы вместе с выделением запускалось?

devote 14.06.2013 14:26

Цитата:

Сообщение от userball
как бы сделать, что бы вместе с выделением запускалось?

<div>Выдели меня мышкой)))))))</div>
<a onclick="alert(window.getLastSelection())">click</a>
<script>
(function() {
    var selectedText = '';
    document.onmouseup = function() {
        if (window.getSelection) {
            var selection = window.getSelection();
            selectedText = selection.toString();
        } else if (document.selection) {
            var range = document.selection.createRange();
            selectedText = range.htmlText;
        }
    }

    window.getLastSelection = function() {
        return selectedText;
    }
})();
</script>

userball 14.06.2013 14:40

что-то пустое возвращает снова, если alert поставить в получение выделенного текста - получает, но в alert по клику пустое значение

devote 14.06.2013 14:51

Цитата:

Сообщение от userball
что-то пустое возвращает снова, если

ну значит событие document.onmouseup срабатывает прежде чем событие клик на элементе... можно реализовать еще так:
<div>Выдели меня мышкой)))))))</div>
<a onclick="alert(window.getLastSelection())">click</a>
<script>
(function() {
    var selectedText = '';
    document.onmouseup = function() {
        setTimeout(function() {
            if (window.getSelection) {
                var selection = window.getSelection();
                selectedText = selection.toString();
            } else if (document.selection) {
                var range = document.selection.createRange();
                selectedText = range.htmlText;
            }
        }, 10);
    }
 
    window.getLastSelection = function() {
        return selectedText;
    }
})();
</script>


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