Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

294
Visualizações
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.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

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.

over 4 years ago · Santiago Trujillo Relatório

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; });
over 4 years ago · Santiago Trujillo Relatório

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.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda