2014-10-13 4 views
0

Я хотел бы выбрать текст автоматически (я имею в виду что-то с диапазонами) в некотором div, чтобы выполнить модульный тест моего сценария в JS.Выберите текст на странице html с помощью JS

Моя проблема заключается в том, что я хочу, чтобы иметь возможность выбрать текст по-разному здесь некоторые примеры выбора (отбора, представленные [для начала и] для конца)

<div>[ here I select all the text in the div ]</div 

<div>This is just a <b>piece [ of</b> selection]</div> 

<div><ul><li>Also with [list</li><li>And why not select many items ?</li></ul><p>With a p ?] but not the complete p !</p> 

Я хочу сделать это, потому что пользователь может это сделать, поэтому я должен проверять все случаи использования. (Если я этого не сделаю, модульный тест совершенно бесполезен ...)

У вас есть представление о том, как выбрать то, что я хочу? (если возможно ...)

ответ

0

Я нашел это в Интернете.

Эта функция, которая при вызове в определенном элементе HTML будет автоматически выбирать весь свой внутренний текст. Функция работает с такими элементами, как INPUT (текст), TEXTAREA, DIV, SPAN, TD и PRE. Кросс-браузер совместим.

var autoSelect = function(event) { 
    var event = event || window.event, 
     elem = event.target || event.srcElement, 
     tag = (elem.tagName || "").toLowerCase(), 
     sel, range; 

    if (tag === "textarea" || tag === "input") { 
    try { 
     elem.select(); 
    } catch(e) { 
     // May be disabled or not selectable 
    } 
    } else if (window.getSelection) { // Not IE 
    sel = window.getSelection(); 
    range = document.createRange(); 
    range.selectNodeContents(elem); 
    sel.removeAllRanges(); 
    sel.addRange(range); 
    } else if (document.selection) { // IE 
    document.selection.empty(); 
    range = document.body.createTextRange(); 
    range.moveToElementText(elem); 
    range.select(); 
    } 
}; 

Чтобы прикрепить эту функцию к элементу:

document.getElementById("foobar").onclick = autoSelect; 
+0

Спасибо, но дело в том, что я хочу выбрать специальную часть моего содержимого div ... Не все. – Nek

0

Вы можете сделать это с помощью регулярных выражений:

var divStr = document.getElementById('yourDiv').innerHTML; 
var matchs = /\[(.*?)\]/.exec(divStr); 
console.log(matchs[1]); 

Мы получаем внутреннюю строку HTML, а затем разбирает все между [ ], и finnaly получить сгруппированный контент.

+0

Я не хочу получать часть html, содержащую div. Я хочу выбрать (как пользователь может выполнить перетаскивание) – Nek

Смежные вопросы