Estoy intentando seleccionar texto de un párrafo HTML y obtener el rango de índice.
Para obtener los valores de rango, estoy usando el siguiente código
{ startIndex = window.getSelection().getRangeAt(0).startOffset; endIndex = window.getSelection().getRangeAt(0).endOffset; }A continuación se muestra el párrafo HTML.
<p>Pellentesque <b>habitant</b> morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>Ahora, cuando selecciono la palabra "habitante", startOffset () devuelve 0 como una etiqueta nueva/secundaria iniciada, pero necesito el índice a partir del párrafo
Devuelve 0 porque el "habitante" de trabajo está envuelto dentro de otro nodo, por lo que el nodo de anclaje no será el párrafo de la sala, será solo el nodo <b>haitant</b> . Puede solucionar esto eliminando la etiqueta <b> .
<p class="text">Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>otra solución será buscar la palabra seleccionada dentro del nodo principal
<p class="text">Pellentesque <b>habitant</b> morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p> const getSelectedTextIndex = () => { const selectedText = window.getSelection().toString() startIndex = document.querySelector('.text').innerText.indexOf(selectedText) endIndex = startIndex + selectedText.length }