Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

284
Views
alert () en el evento de cambio no se puede descartar en Firefox

No se puede cerrar un cuadro de diálogo de alert() en un evento de cambio con jQuery (hago clic en "Aceptar" pero no sucede nada *) en la última versión de Firefox. En Internet Explorer, la alerta aparece una vez y se puede cerrar.

Parece que al hacer clic en la alerta (re)activa un evento de cambio en el campo de entrada de Firefox, pero no estoy seguro, ya que el mensaje de registro de la consola no aparece.

 $('input#i').on('keyup change', function(e) { e.preventDefault(); console.log('alert ...'); alert(1); // can't be closed on Firefox return false; });

Violín de JavaScript completo: https://jsfiddle.net/powtac/w1md0bdd/

Probado en Firefox 52.0.1 (64 bits) en Win 7 e IE 11 en Win 7.

* = Al menos no puedo decir si pasa algo. La ventana emergente permanece en la misma posición. se puede hacer clic en el botón, su estilo cambia. Probé para descartar la alerta con el teclado (Enter) y el mouse haciendo clic en "Ok". Ambos casos no eliminaron la ventana de alerta.

Actualizar:

Al.G. en esta respuesta https://stackoverflow.com/a/43052301/22470 encontré una solución y explicación. En resumen: keydown en lugar keyup . Dado que esto todavía no explica el comportamiento al usar el mouse, solo hice algunas pruebas adicionales y noté que las alertas se ven diferentes:

En mi mal caso de uso donde la ventana emergente no se puede eliminar, parece:

mala alerta

Al usar la corrección de Al.G, o eliminar uno de los eventos que el código está escuchando, se ve así:

ingrese la descripción de la imagen aquí

Esto podría ser un indicio de que la alerta aún no está completamente dibujada y ya muestra otra ventana emergente o algo está bloqueando la representación.

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Poniendo mi comentario como respuesta:

En realidad, el botón Ok no está deshabilitado. Puede hacer clic en él y el aviso se cierra, pero:

  • Cierra la alerta, por lo que el enfoque clave vuelve al elemento anterior que lo contenía, es decir, el elemento de entrada.

  • Justo después de eso, sueltas la tecla.
    Dado que el elemento de entrada tiene el foco, desencadena un evento keyup en él.

  • Esa misma función de evento keyup que adjuntó se vuelve a ejecutar. Ir al paso 1 :)

Una forma de resolver esto es usar un evento que no se activará después de soltar una tecla. Lo que necesitas aquí es keydown .


  • En cuanto a por qué el console.log no se imprime dos veces :
    probablemente lo sea, solo que el navegador no agrega una nueva línea en la consola, sino que muestra un pequeño número junto a su mensaje con la cantidad de veces que se envió el mensaje.

  • Para rastrear qué tipos de eventos se activaron : console.log('alert ...' + e.type + Math.random());
    Agregué un número aleatorio para que su navegador no aplaste sus mensajes en uno.

  • Por qué las letras no aparecen en el cuadro de entrada cuando se usa keydown : porque preventDefault() y return false; en el evento Cualquier desencadenante de evento adicional se ignora.

about 4 years ago · Santiago Trujillo Report

0

Parece ser algún tipo de error de Firefox...

Supongo que puedes solucionar el problema con este código...

 var popupOpen = false; $('input#i').on('keyup change', function(ev) { ev.preventDefault(); if (popupOpen == false) { popupOpen = true; console.log('alert ...'); alert(1); // can't be closed on Firefox popupOpen = false; } return false; });
about 4 years ago · Santiago Trujillo Report

0

Entonces, en FF44.0.2, funciona como se indica. Sin embargo, es posible que obtenga algunos resultados inesperados porque está disparando dos veces. El teclado se apaga y aparece la alerta. La alerta que se muestra elimina el foco de la entrada, lo que luego activa el evento de cambio en ese mismo elemento, volviendo a mostrar la alerta. Solo lo obtengo dos veces por cada tecla, no un bucle infinito.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!