Necesito obtener el área seleccionada por el usuario de un área de texto y luego insertar las etiquetas <a>
a su alrededor.¿Poner etiquetas redondas para resaltar el texto del usuario?
Lo utilizo para obtener el área seleccionada por el usuario:
var textComponent = document.getElementById('article');
var selectedText;
if (document.selection != undefined)
{
textComponent.focus();
var sel = document.selection.createRange();
selectedText = sel.text;
}
// Mozilla version
else if (textComponent.selectionStart != undefined)
{
var startPos = textComponent.selectionStart;
var endPos = textComponent.selectionEnd;
selectedText = textComponent.value.substring(startPos, endPos)
}
Ahora, sé que puedo hacer una búsqueda de cadena para el texto seleccionado por el usuario e insertar un tag alrededor de ella, pero lo que pasa si el usuario ha seleccionado el texto aparece dos veces en el texto, por ejemplo.
Hola, adiós.
Si el usuario resalta el segundo 'usted' para el enlace que desea, seguramente una cadena de reemplazo pondría una etiqueta alrededor de cada instancia de 'usted'.
¿Cuál es la mejor manera de hacerlo?
Espero que una cadena de reemplazo le daría la opción de "reemplazar todo" o "reemplazar la primera aparición". Si usa "primera aparición" y puede comenzar en el punto de inicio de selección, ¿podría ser suficiente? – pjmorse
manteniendo una variable 'lastFocusedElement' puede ayudar. Encuentra texto en ese elemento en particular. – Jashwant