Selección de ventana de configuración de JavaScript



tr html (3)

En JavaScript, hay un método window.getSelection() , que me permite obtener la selección actual que el usuario ha realizado.

¿Hay una función correspondiente, algo como window.setSelection() , que me permita configurar, o borrar, la selección actual?


Tal vez esto lo hará:

window.selection.clear();

Versión de cursor cruzado:

if (window.getSelection) {
   if (window.getSelection().empty) {  // Chrome
     window.getSelection().empty();
   } else if (window.getSelection().removeAllRanges) {  // Firefox
     window.getSelection().removeAllRanges();
   }
} else if (document.selection) {  // IE?
  document.selection.empty();
}

En los navegadores que admiten las cosas "selección" y "rango", querrá crear un objeto de rango y luego establecer su inicio / fin. La documentación de Mozilla para el objeto "rango" tiene mucha información.

Chrome no admite esto, al menos no con esa API, y apuesto a que Safari tampoco.

edit : gracias a @Tim Down por señalar que WebKit (Chrome y Safari) sí lo admiten, lo que significa que mi jsfiddle tenía un error tipográfico o algo así.


Borrar la selección en todos los principales navegadores:

function clearSelection() {
    if (window.getSelection) {
        window.getSelection().removeAllRanges();
    } else if (document.selection) {
        document.selection.empty();
    }
}

La selección de contenido requiere el uso de los objetos DOM Range y Selection en la mayoría de los navegadores y los objetos de TextRange en IE <9. Este es un ejemplo simple de navegador cruzado que selecciona el contenido de un elemento en particular:

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




clear