Estoy desarrollando una aplicación de chat usando Angular y Electron.
Quiero que el cursor del usuario esté siempre en el área de texto donde el usuario escribe el mensaje. Cuando el usuario hace clic en cualquier otro lugar de la página, el cursor no debe salir del área de texto. Esto ayuda al usuario a escribir en cualquier momento desde cualquier lugar, solo escribirá en el área de texto.
Intenté lo siguiente:
setTimeout(() => { this.messageTextAreaInput.nativeElement.focus(); }, 20);Lo llamo en el evento de desenfoque del área de texto. Pero esta solución no me deja copiar texto de otros mensajes. Cuando selecciono cualquier texto del historial de mensajes, mi selección se pierde.
¿Alguna otra forma de lograr esto?
window.addEventListener("keydown", () => {document.getElementById("textarea").focus()}); <textarea id="textarea" ></textarea>Prueba de esta manera. Puede cambiar el elemento de enfoque a su propio elemento que puede ser enfocable.
const focusOnTextInput = () => document.getElementById('input').focus(); document.addEventListener('click', focusOnTextInput); document.addEventListener('DOMContentLoaded', focusOnTextInput); <input type="text" id="input"/>Podrías intentar usar algo como
window.onclick = function(event) { if (!event.target.matches('.messageTextAreaInputClassName')) { document.getElementById('messageTextAreaInput').focus(); } }De modo que hacer clic en cualquier lugar que no sea el área de texto llamará al área de texto para que se enfoque.