Hola, estoy tratando de desplazarme al div solo cuando el envío finaliza con promesas.
function submitForm(form) { console.log("submitForm: ", form); return Promise.resolve(() => form.submit()); } async function submitFm (form) { console.log("submitFm: ", form); await submitForm(form); }; submitButton.addEventListener("click", () => { submitFm(form).then(() => { console.log("should display after submit is done!"); }); });Se supone que la promesa funciona así, ¿alguien sabe lo que falta? Gracias por adelantado
El método submit() en un formulario activa el envío del formulario (y la navegación al resultado).
Tan pronto como se active, la función de submit() finaliza.
Entonces la promesa se resuelve.
Entonces se ejecuta la función then .
Luego, el navegador navega a la nueva página.
No hay forma de que JavaScript se ejecute en una página web para hacer que JavaScript se ejecute directamente en la página siguiente a la que navega la ventana gráfica.
Descargar la página actual eliminará cualquier JavaScript que se ejecute en ella. La página siguiente, ya sea en el otro extremo de un enlace, en el envío de un formulario o en una llamada a location.reload() , etc., es una pizarra en blanco. Cualquier JS en esa página se ejecuta desde cero.
Si desea causar un efecto en él, debe hacerlo pasando un mensaje a través de algo que persistirá entre las cargas de la página.
Los ejemplos incluyen una cadena de consulta en la URL o la API de almacenamiento de sesión.
Luego, necesita JavaScript en la página siguiente para verificar ese mensaje, actuar en consecuencia y posiblemente limpiarlo para que no afecte la carga de la página siguiente.
Si envía un formulario basado en la acción del formulario, debe pasar el estado a la página siguiente. La forma más sencilla es usar un ancla en la URL, la URL con un hashtag se desplazará al elemento cuya identificación es el hashtag.
p.ej
<form action="/post/data#id" method="post"></form>Si envía en función de ajax o fetch, redirige la URL cuando se envía, también usa hashtags. o puede conservar sus datos mediante la API de almacenamiento y controlar la acción de desplazamiento en la página siguiente.
Si usa marcos SPA como Vue React u otros. Puede usar la API del enrutador para manejar los cambios de URL en el envío. o manejar el desplazamiento directamente cuando el formulario se envía correctamente.