Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.06.2013, 13:59
Интересующийся
Отправить личное сообщение для userball Посмотреть профиль Найти все сообщения от userball
 
Регистрация: 14.06.2013
Сообщений: 10

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

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

пробую так:
<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 другая функция, вычитал уже

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

Последний раз редактировалось userball, 14.06.2013 в 14:02.
Ответить с цитированием
  #2 (permalink)  
Старый 14.06.2013, 14:02
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Не знаю как у вас но у меня все работает:
<div>Выдели меня мышкой)))))))</div>
<script>
document.onmouseup = function() {
    var selection = window.getSelection();
    alert(selection.toString());
}
</script>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 14.06.2013, 14:08
Интересующийся
Отправить личное сообщение для userball Посмотреть профиль Найти все сообщения от userball
 
Регистрация: 14.06.2013
Сообщений: 10

Сообщение от devote Посмотреть сообщение
Не знаю как у вас но у меня все работает:
<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>


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

Последний раз редактировалось userball, 14.06.2013 в 14:14.
Ответить с цитированием
  #4 (permalink)  
Старый 14.06.2013, 14:12
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Не знаю как у вас, но у меня все хорошо работает:
<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>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 14.06.2013, 14:20
Интересующийся
Отправить личное сообщение для userball Посмотреть профиль Найти все сообщения от userball
 
Регистрация: 14.06.2013
Сообщений: 10

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

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

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

Последний раз редактировалось userball, 14.06.2013 в 14:22.
Ответить с цитированием
  #6 (permalink)  
Старый 14.06.2013, 14:26
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от 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>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 14.06.2013 в 14:49.
Ответить с цитированием
  #7 (permalink)  
Старый 14.06.2013, 14:40
Интересующийся
Отправить личное сообщение для userball Посмотреть профиль Найти все сообщения от userball
 
Регистрация: 14.06.2013
Сообщений: 10

что-то пустое возвращает снова, если alert поставить в получение выделенного текста - получает, но в alert по клику пустое значение
Ответить с цитированием
  #8 (permalink)  
Старый 14.06.2013, 14:51
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от 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>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
Отследить клик по дочернему объекту AllanZ jQuery 3 05.09.2012 12:38
Выравнять три дива в одной строке debugx (X)HTML/CSS 9 06.10.2011 12:03
Вопрос по относительному позиционированию DIV XPOMOB (X)HTML/CSS 11 15.07.2009 17:02