2010-11-15 9 views
21

En JavaScript, hay varios métodos para acceder a la selección de texto del usuario y crear selecciones de texto (o rangos); consulte http://www.quirksmode.org/dom/range_intro.html.¿Puede establecer y/o cambiar la selección de texto del usuario en JavaScript?

Según esa página, puede crear programáticamente un rango y acceder al texto dentro de ese. Pero hacer esto no cambia la selección del texto del usuario, o hacer que el usuario tenga algún texto seleccionado si no lo hace.

¿Puede establecer y/o cambiar la selección del texto del usuario en JavaScript?

+1

¿Quiere decir que quiere que cierto texto en la página aparezca seleccionado de repente? Resaltado azul y todo? –

+0

@ Shadow: sí, eso es todo. –

Respuesta

31

Sí. En todos los navegadores puede obtener uno o más Range so TextRange de la selección del usuario, y ambos Range y TextRange tienen métodos para cambiar el contenido del rango.

ACTUALIZACIÓN

Puede configurar la selección del usuario mediante la creación de un Range y agregarlo al objeto Selection en la mayoría de los navegadores y creando un TextRange y llamando a su método select() en IE < = 8.

Por ejemplo, para configurar la selección de modo que abarque el contenido de un elemento:

function selectElementContents(el) { 
    if (window.getSelection && document.createRange) { 
     var sel = window.getSelection(); 
     var range = document.createRange(); 
     range.selectNodeContents(el); 
     sel.removeAllRanges(); 
     sel.addRange(range); 
    } else if (document.selection && document.body.createTextRange) { 
     var textRange = document.body.createTextRange(); 
     textRange.moveToElementText(el); 
     textRange.select(); 
    } 
} 

También hay varios métodos del objeto Selection que se pueden usar para cambiar la selección del usuario en navegadores que no sean IE. Si puede ser más específico acerca de cómo desea cambiar la selección, será más fácil ayudarlo.

+0

Ah, sí, lo siento, no formulé la pregunta muy bien: en realidad estoy buscando establecer la selección del texto del usuario cuando todavía no lo tienen. –

+0

es posible seleccionar diferentes rangos simultáneamente. Quiero poder seleccionar varias partes de texto que son discontinuas. – Techsin

+1

@Techsin: Sí, pero solo en Firefox. Llame a 'addRange()' para cada rango que desee seleccionar. –

Cuestiones relacionadas