Estoy trabajando en la automatización de una tarea (completar un formulario y enviar datos y luego obtener el mensaje de resultado donde los datos se leen de un archivo txt línea por línea). Mientras ejecuto mi código JS a través de la consola, todo funciona bien hasta antes de hacer clic en el botón Enviar. después de hacer clic en el botón Enviar, puedo ver que el HTML se vuelve a cargar con nuevos datos y la URL se cambia de www.example.com a www.example.com/requests/12345 y luego el siguiente paso después del clic no es respetado.
Pensé que podría ser porque estaba usando:
document.getElementByID("btn-submit").click();y lo cambié a
$("#btn-submit").click().trigger('change');Pero sigue siendo el mismo problema.
Traté de usar las funciones de suspensión y setTimeout para esperar a que se cargara el nuevo HTML, pero esto no ayudó en absoluto :(
La tarea consta de pasos simples hasta que hacer clic en el botón funciona perfectamente, estoy atascado solo después del botón Enviar, ya que quiero obtener los resultados que se muestran en la página después de hacer clic en el botón Enviar.
¿Alguna idea, por favor, qué se está haciendo mal de mi parte?
Los elementos que estoy tratando de obtener están en un div que está vacío antes de que se haga clic en el botón Enviar de esta manera
<div id="message-bar"> </div> Después de hacer clic en el botón Enviar, se llena como se muestra a continuación (también la URL se cambia a algo enlace www.example.com/requests/12345 - por supuesto, los elementos de resultado no se mostrarán si no se hace clic en el botón:
<div id="message-bar"> <div id="alert-success" class="alert alert-success"> <button type="button" class="close" data-dismiss="alert">×</button> <div class="text alert-text">Request approved!</div> <ul id="bullet-items"><li>Thank you</li></ul> </div> </div>Traté de verificar si el elemento no está vacío, luego obtuve el texto interno de los elementos, pero parece que mi código se está eliminando cuando la URL de la página cambia después del botón de enviar:
if (document.getElementById("message-bar").innerText != "") { // do something }Muchas gracias
Intenta usar el evento .preventDefault()
https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault ).
Probar
$("#btn-submit").click(function(event){ event.preventDefault(); })O sin jQuery
var btn = document.getElementById('btn-submit'); btn.addEventListener('click',function(event){ event.preventDefault(); })