Tengo un cuadro de entrada con un valor predeterminado de html. Usando la función window.onload , agrego un detector de eventos para enviar el valor en el cuadro al registro de la consola, y también llamo a dicho evento en la función window.onload.
Como era de esperar, cuando abro la página, ejecuta el código una vez y genera el valor predeterminado de entrada. Y puedo editar el valor, hacer clic en el botón y el valor actualizado también se registra en la consola.
Pero, si sigo un enlace a una página diferente y luego uso el botón Atrás a mi página original, el texto actualizado permanece en el cuadro de entrada, pero el registro de la consola genera el valor html predeterminado. Al hacer clic en el botón nuevamente, se genera el valor actualizado como se muestra en la entrada.
¿Cómo puedo hacer que cuando regrese, el valor actualizado que se muestra en el cuadro de entrada también se registre en la consola (para que cuando regrese ejecute el mismo código donde lo dejé)?
// Otherwise ran by window.onload = () => {...} const text = document.getElementById('text'); const button = document.getElementById('button'); button.addEventListener('click', () => console.log(text.value)); button.click(); <input id="text" value="text" /> <input id="button" type="button" value="Click" /><br> <a href="https://stackoverflow.com/">https://stackoverflow.com/</a>No estoy del todo seguro, pero creo que el navegador completa automáticamente los valores inmediatamente después de cargar completamente el DOM de forma sincrónica. Puede esperar a que termine llamando a su código dentro de setTimeout 0.
setTimeout(function () { const text = document.getElementById('text'); const button = document.getElementById('button'); button.addEventListener('click', () => console.log(text.value)); button.click(); }, 0)