modal javascript alert

modal - Emula el JavaScript ''alerta'' bloqueando la naturaleza



alert title javascript (3)

¿Es posible crear un mensaje modal personalizado que "bloquee" la ejecución del script hasta que el usuario lo ingrese?

Por ejemplo, ¿cómo puede lograr esto sin usar las funciones de alerta / solicitud de ventana nativas?

setInterval(function(){ alert(''Click OK to Continue''); // timing stops until user hits ok },4000);

Sé que puede hacer que su diálogo personalizado invoque una función de devolución de llamada en la entrada del usuario, pero estoy interesado en poder forzar este comportamiento de bloqueo


¿Es posible crear un mensaje modal personalizado que "bloquee" la ejecución del script hasta que el usuario lo ingrese?

No. No hay manera de bloquear la ejecución o la interacción del usuario tan efectivamente como una ventana emergente nativa (ya que con las ventanas emergentes personalizadas, el usuario siempre es técnicamente capaz de usar herramientas de desarrollador para salir de ella).

Sin embargo, como dice pst en los comentarios sobre la pregunta, los lightboxes asíncronos no son onerosos, y son casi tan efectivos para bloquear la interacción del usuario como las ventanas emergentes, por lo que recomiendo encontrar una biblioteca que proporcione lightboxes que te gusten y ejecutar con eso.

Por ejemplo, ¿cómo puede lograr esto sin usar las funciones de alerta / solicitud de ventana nativas?

No puede usar ese código para hacer lo que dice que hará incluso con las funciones de alerta / solicitud de ventana nativas (vea este violín - espere 4 segundos antes de cerrar la ventana emergente). Necesitarías lo siguiente:

function timeoutFunction() { alert(''Click OK to Continue''); // timing ACTUALLY stops until user hits ok setTimeout(timeoutFunction, 4000); } setTimeout(timeoutFunction,4000);

Lo cual es algo que no puede implementar (precisamente - vea más arriba en las cajas de luz) sin ventanas emergentes nativas.

Incluso while(true) bucles while(true) generalmente no se bloquean, así como una ventana emergente, firefox al menos tiene un mensaje de "detención del guión" que aparece después de que se haya prolongado demasiado, y estoy bastante seguro de que otros navegadores importantes también lo hacen.


No, no puedes (al menos no en un navegador). Las API de Javascript son en su mayoría asíncronas. alert / prompt son excepciones. Sin embargo, no es muy difícil trabajar con indicaciones asíncronas y devoluciones de llamada.


Un poco viejo, pero en caso de que ayude, he encontrado mi solución con esto:

var answer = confirm("are you sure?"); if(!answer)return;