2015-03-02 6 views
0

Я хочу выполнить действие, когда пользователь выбирает любой текст на странице. Я пытался что-то вроде этого:Как узнать, когда пользователь выбирает абзац?

var selObj; 

     document.querySelector("p").onselect = function(){ 
     selObj = window.getSelection(); 
     var selectedText = selObj.toString(); 
     //action 

Но потом я обнаружил, что onselect только для входов и текстовых областей, и не нашел другого способа пробовать что-то вроде этого.

EDIT: Я знаю, как получить выделенный текст, мне нужно событие, которое срабатывает при выборе текста!

+0

OnFocus, вероятно, сделать бы это – Rooster

+0

, возможно, это могло бы помочь http://stackoverflow.com/questions/5379120/get-the-highlighted-selected-text – HAMED

+1

не дубликат. Связанный вопрос - как выбрать текст. Этот вопрос заключается в том, как запускать событие, когда пользователь выбирает текст. – CoderDennis

ответ

0

Вы можете связать событие mouseup с тегом абзаца ("p"). В рамках этого обработчика события, вы можете проверить:

document.selection.createRange().text 

или

window.getSelection() 

Кроме того, вы можете проверить здесь javascript to get paragraph of selected text in web page.

0

Использование событий мыши для захвата выделения.

var paras = document.getElementsByClassName("para"); 
 

 
for (var i = 0; i < paras.length; i++) { 
 
    paras[i].addEventListener('click', getSelected, false); 
 
} 
 

 
function selectElementContents(el) { 
 

 
    return document.getSelection()||window.getSelection(); 
 

 
} 
 

 
function getSelected() { 
 

 
    var el = document.getElementById("selectedPara"); 
 
    alert(selectElementContents(el)); 
 

 
};
<p class="para">select me</p> 
 
<p class="para">over me</p> 
 
<p class="para">hey here</p>

+0

И если я хочу, чтобы это применимо к любому абзацу, а не к одному идентификатору? –