Cuando hago doble clic en el texto con el mouse, el sistema selecciona automáticamente el texto para mí.
¿Hay alguna manera de reemplazar este comportamiento presionando una tecla de acceso directo?
lo intento
<p>Hello world! 123 abc ABC</p> <script> const HOTKEY = "Control" let clientX, clientY document.addEventListener("mousemove", (e) => { clientX = e.clientX clientY = e.clientY }) document.addEventListener("keydown", (keyboardEvent) => { if (keyboardEvent.key === HOTKEY) { const elem = document.elementFromPoint(clientX, clientY) console.log(elem) elem.dispatchEvent(new MouseEvent("dblclick")) } }) </script>no funciona
Esperado: por ejemplo, si muevo el mouse hacia el world y presiono la tecla Ctrl , debería seleccionar el texto, como se muestra a continuación.
En la práctica, no puedo saber el elemento real.
Es decir, no puedo saber a través querySelector .
El sistema generó el elemento dinámicamente . Lo único confiable es hacer doble clic para obtener el texto seleccionado.
Esto seleccionará todo el texto en el nodo, pero al menos funciona.
<p>Hello world! 123 abc ABC</p> <script> const HOTKEY = "Control" let clientX, clientY document.addEventListener("mousemove", (e) => { clientX = e.clientX clientY = e.clientY }) document.addEventListener("keydown", (keyboardEvent) => { if (keyboardEvent.key === HOTKEY) { const node= document.elementFromPoint(clientX, clientY) if (document.body.createTextRange) { const range = document.body.createTextRange(); range.moveToElementText(node); range.select(); } else if (window.getSelection) { const selection = window.getSelection(); const range = document.createRange(); range.selectNodeContents(node); selection.removeAllRanges(); selection.addRange(range); } else { console.warn("Could not select text in node: Unsupported browser."); } } }) </script>El crédito completo va aquí: seleccionar texto en un elemento (similar a resaltar con el mouse)