Activador de evento de texto seleccionado en Javascript

Resuelto asked hace 14 años • 10 respuestas

¿Cómo activar una función de JavaScript cuando alguien selecciona un fragmento de texto determinado en una página con el mouse?
Además, ¿hay alguna forma de encontrar la posición del texto seleccionado en la página?

Actualización: para ser más claro, un fragmento de texto puede ser parte de una oración, una palabra, una frase o un párrafo completo.

 avatar Aug 23 '10 12:08
Aceptado

Actualización : Mientras tanto, se creó un evento " Se seleccionó texto " (DOM) que es compatible con todos los navegadores actuales: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select_event

Tenga en cuenta que este evento solo funciona en elementos de formulario , es decir, agregados a la HTMLInputElementAPI


No hay ningún evento " Se seleccionó texto " (DOM), pero puede vincular un mouseupevento al archivo document.body. Dentro de ese controlador de eventos, puede simplemente verificar el

document.selection.createRange().text

o

window.getSelection()

métodos. Hay varios temas en Stackoverflow, como este javascript para obtener un párrafo de texto seleccionado en una página web .

No estoy seguro de lo que quieres decir con "encontrar la posición", pero para permanecer en mi mundo de ejemplo, puedes usar event propertyspara las posiciones X+Y del mouse.

Ejemplo: http://www.jsfiddle.net/2C6fB/1/

jAndy avatar Aug 23 '2010 06:08 jAndy

Aquí hay una combinación rápida:

$('div').mouseup(function() {
    var text=getSelectedText();
    if (text!='') alert(text);
});

function getSelectedText() {
    if (window.getSelection) {
        return window.getSelection().toString();
    } else if (document.selection) {
        return document.selection.createRange().text;
    }
    return '';
}​

<div>Here is some text</div>

Demostración: http://jsfiddle.net/FvnPS/11/

karim79 avatar Aug 23 '2010 06:08 karim79