Estoy tratando de usar un bookmarklet para modificar el contenido del cuadro de texto actualmente activo.
Si escribo let a = document.activeElement; console.log(a) , luego en mi consola, veo el cuadro de texto actualmente activo impreso correctamente en la consola. Si, en la consola, escribo a.value = "hello" , el contenido de ese cuadro de texto cambia exactamente como se esperaba.
Si escribo let a = document.activeElement; a.value = "hello" en mi bookmarklet, sin embargo, reemplaza todo el documento con el nodo de texto "hola". Lo mismo con document.activeElement = "hello" .
Supongo que una vez que se hace clic en el bookmarklet, todo el documento o la ventana del navegador se convierte en el elemento activo. Pero si eso es cierto, no estoy seguro de por qué el nodo correcto sería referenciado y preservado en el primer caso. Tampoco puedo encontrar ninguna forma de preservar la referencia para hacer algo fuera de la consola.
¿Es posible hacer esto?
No estoy seguro de que sea posible detectar el foco después de que se haya cambiado, en este caso, haciendo clic en el marcador. Aunque es más molesto, puede verificar los cambios de enfoque con el evento onfocus y solo luego usar document.activeElement .