tag javascript range textselection

javascript - title tag html5



Establecer selección por rango en Javascript (2)

Quiero seleccionar texto enviando location / anchorOffset y length / offset usando Javascript Aquí está mi código

var node = document.getElementById("content"); var range = document.createRange(); range.setStart(node, 0); range.setEnd(node, 4); // here 0 and 4 is my location and length for the selection // if my string is "This is test string" in my case its must select "This" var selection = window.getSelection(); selection.removeAllRanges(); selection.addRange(range);

Pero el problema es con range.setStart y range.setEnd que no funciona como espero


Aquí hay una buena solución si está intentando seleccionar un conjunto de resultados jQuery

var $newSelection = $(''.someElements''); var selection = window.getSelection(); var range = document.createRange(); range.setStartBefore($newSelection.first()[0]); range.setEndAfter($newSelection.last()[0]); selection.removeAllRanges(); selection.addRange(range);


Los setStart() y setEnd() del rango DOM están bien especificados, por lo que puede encontrar la respuesta leyendo la especificación o MDN .

Para resumir, si desea especificar un límite de rango en términos de compensaciones de caracteres, debe tratar con un nodo de texto en lugar de un elemento. Si su elemento contiene un solo nodo de texto, cambiará la primera línea de su código a lo siguiente:

var node = document.getElementById("content").firstChild;