¿Es posible obtener el texto resaltado en un párrafo de un sitio web, p. usando jQuery?Obtener el texto resaltado/seleccionado
Respuesta
Obtener el texto que el usuario ha seleccionado es relativamente simple. No se obtienen beneficios al involucrar a jQuery ya que no necesita nada más que los objetos window
y document
.
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
Si usted está interesado en una implementación que también se ocupará de selecciones en <textarea>
y Texty <input>
elementos, se puede utilizar la siguiente. Como ahora es 2016, estoy omitiendo el código requerido para el soporte de IE < = 8 pero he publicado cosas para eso en muchos lugares en SO.
function getSelectionText() {
var text = "";
var activeEl = document.activeElement;
var activeElTagName = activeEl ? activeEl.tagName.toLowerCase() : null;
if (
(activeElTagName == "textarea") || (activeElTagName == "input" &&
/^(?:text|search|password|tel|url)$/i.test(activeEl.type)) &&
(typeof activeEl.selectionStart == "number")
) {
text = activeEl.value.slice(activeEl.selectionStart, activeEl.selectionEnd);
} else if (window.getSelection) {
text = window.getSelection().toString();
}
return text;
}
document.onmouseup = document.onkeyup = document.onselectionchange = function() {
document.getElementById("sel").value = getSelectionText();
};
Selection:
<br>
<textarea id="sel" rows="3" cols="50"></textarea>
<p>Please select some text.</p>
<input value="Some text in a text input">
<br>
<input type="search" value="Some text in a search input">
<br>
<input type="tel" value="4872349749823">
<br>
<textarea>Some text in a textarea</textarea>
¿Para qué sirve {} -fork? ¿De qué se trata el "Control"? – Dan
@Dan: Perdón, me perdí esta pregunta (no creo que eso me haya alertado). La segunda rama es para IE <= 8 (IE 9 implementa 'window.getSelection()'). La comprobación 'document.selection.type' está probando que la selección es una selección de texto en lugar de una selección de control. En IE, una selección de control es una selección dentro de un elemento editable que contiene uno o más elementos (como imágenes y controles de formulario) con contornos y tamaños de identificadores. Si llama a '.createRange()' en dicha selección, obtendrá un 'ControlRange' en lugar de' TextRange', y 'ControlRange's no tendrá la propiedad' text'. –
¿Se puede llamar a esta función después de cualquier evento? No parece funcionar para mí en un área de texto –
esta solución funciona si estás usando Chrome (no se puede verificar otros navegadores) y si el texto se encuentra en el mismo elemento DOM:
window.getSelection().anchorNode.textContent.substring(
window.getSelection().extentOffset,
window.getSelection().anchorOffset)
Get texto resaltado de esta manera:
window.getSelection().toString()
y, por supuesto, un specia l para el tratamiento, es decir:
document.selection.createRange().htmlText
Para IE> = 10 "' document.selection' _support se eliminó en IE10 y se reemplazó por '' window.getSelection' ". Fuente: https://connect.microsoft.com/IE/feedback/details/795325/window-getselection-and-document-selection-legacy-support – user2314737
Esto fallará en múltiples condiciones en varios navegadores (por ejemplo, Firefox). – Makyen
- 1. jQuery - obtener el texto para el elemento sin hijos texto
- 2. cómo obtener el texto de Vista de Texto
- 3. Obtener el texto de asp: cuadro de texto
- 4. obtener el texto del botón presionado
- 5. Obtener el texto de un cuadro desplegable
- 6. jQuery obtener el texto de entrada anterior
- 7. Obtener el texto de un elemento li
- 8. Cómo obtener el ancho/alto del texto
- 9. Obtener el texto de Html.DropdownListFor .... MVC3
- 10. Obtener el texto dentro de un botón
- 11. Establecer texto y obtener texto del portapapeles
- 12. Obtener texto de UIAlertView
- 13. ¿Cómo obtener el contenido de texto de todo el documento?
- 14. Obtener el valor y el texto de SELECT en jQuery
- 15. X11 Obtener texto del Portapapeles
- 16. ¿Cómo obtener texto de EditText?
- 17. Obtener UIButton texto del emisor
- 18. WPF: Obtener texto "ajustado" de un cuadro de texto
- 19. Obtener texto sin formato desde una QLabel con texto enriquecido
- 20. Obtener texto sin formato de un texto RTF
- 21. Obtener número de línea en el área de texto
- 22. Javascript obtener el valor de texto del botón personalizado
- 23. Utilice Javascript para obtener el texto seleccionado en Mobile Safari
- 24. Obtener texto traducible de una fuente externa en el catálogo
- 25. Obtener el texto seleccionado con CKEditor Plugin en IE
- 26. Obtener el texto sobre la tabla MS Word
- 27. Cómo obtener el texto ellipsized en una TextView
- 28. ¿Cómo puedo obtener el texto dinámico de ToggleButton en Android?
- 29. obtener el tamaño del texto svg en python
- 30. Obtener el texto después elemento span utilizando jQuery
He aquí una solución de trabajo http://dipaksblogonline.blogspot.in/2014/11/javascript-text-selection-popover.html – Dipak
Javascript simple trabajó para mí. document.getSelection(). anchorNode.data.substr (document.getSelection(). anchorOffset, document.getSelection(). focusOffset-document.getSelection(). anchorOffset) –
@RohitVerma: Eso solo va a funcionar en el caso simple de una selección que está contenida dentro de un solo nodo de texto, lo que de ninguna manera garantiza que sea el caso. –