2014-11-17 2 views
2

Я пытаюсь выбрать текст вручную. window.getSelection().getRangeAt(0); Строка, используемая для выбранного окна. Но я хочу, чтобы это было предварительно выбрано мной.Javascript window.getSelection() альтернативный

foo=function() 
    {  
    var selection= "Lorem ipsum dolor"; // Instead of this line window.getSelection().getRangeAt(0); 
    var selectedText = selection.extractContents(); 
    var span= document.createElement("span"); 
    span.style.backgroundColor = "yellow"; 
    span.appendChild(selectedText); 
    selection.insertNode(span); 
    } 

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p> 
<input type="button" onclick="foo();" value="FOO"/> 

ответ

0

Существует проект github findAndReplaceDOMText. Библиотека javascript, которая может быть полезна: она ищет совпадения регулярных выражений в данном узле DOM и заменяет или обертывает каждое соответствие узлом или фрагментом текста, который вы можете указать.

Вы также можете использовать window.find()/createTextRange. This answer показывает, как это сделать. Он будет соответствовать тексту, который пересекает границы элементов и делает выделение для вас, используя document.execCommand().

Наконец - если я смотрю на ваш пример, и вы просто хотите заменить определенный фрагмент текстового узла - вы можете использовать регулярные выражения, как это:

element.innerHTML = element.innerHTML.replace(
    /Lorem ipsum dolor/gi, 
    '<span class="f">$0</span>' 
); 
Смежные вопросы