2009-08-23 14 views
6

This plugin le permite tomar el texto que el usuario ha seleccionado en un área de texto, y this site tiene instrucciones no basadas en jQuery para capturar texto que el usuario ha seleccionado fuera de un texto zona.Obtener texto seleccionado en la página (no en un área de texto) con jQuery

Me pregunto si la funcionalidad de este último está disponible en cualquier plugin jQuery.

Edit: Además, ¿es posible obtener los índices inicial y final de la selección? Es decir, ¿dónde comienza y termina la selección dentro del elemento contenedor?

Respuesta

6

La razón por la que es difícil encontrar un complemento para esto no es que no sea muy "jQuery" ish. Con esto me refiero a que los complementos jQuery normalmente funcionan en objetos jQuery y la selección no tiene nada que ver con ningún elemento.

Edité: Eché de menos el hecho de que publicó este enlace en su pregunta, pero lo dejo a continuación para que esté completo, ya que mi versión está mejor formateada (pero idéntica). :)

<script language=javascript> 
function getSelText() { 
    var txt = ''; 
    if (window.getSelection) { 
    txt = window.getSelection(); 
    } else if (document.getSelection) { 
    txt = document.getSelection(); 
    } else if (document.selection) { 
    txt = document.selection.createRange().text; 
    } else return; 
    document.aform.selectedtext.value = txt; 
} 
</script> 
<input type="button" value="Get selection" onmousedown="getSelText()"> 
<form name=aform > 
<textarea name="selectedtext" rows="5" cols="20"></textarea> 
</form> 
+0

@Cletus - Dio el mismo enlace que ya tenía en su pregunta (2º enlace). – klabranche

+0

Sí, prefiero que esté empaquetado como algún tipo de complemento (copiar y pegar el código me hace sentir sucio). –

+0

Woops, se perdió eso. – cletus

3

No hay nada de malo en copiar y pegar fragmentos de código, que es como la mayoría de la gente comienza a salir y que continuarán haciéndolo hasta que llegue tan familiarizados con los fragmentos que se pega que usted va a empezar a modificar los bits y porciones o incluso comenzando desde cero por usted mismo.

Para esa pieza de código en particular, realmente no veo nada malo en copiarlo aparte de no confiar en los controladores de eventos en línea y agregar discretamente el 'mousedown' con jQuery.

+1

Supongo que a Horace no le gusta copiar y pegar el código como si en el futuro se tratara de un error que estará en dos o más lugares en lugar de uno solo (si solo hay un autor de un complemento). Si se trata de un artículo de stackoverflow con actualmente 1.100 visitas, es mucho tiempo perdido. – AJP

Cuestiones relacionadas