¿Hay una alerta de JavaScript que no pausa el script?

Estoy buscando algo como alert() , pero eso no "pausa" el script.

Quiero mostrar una alerta y permitir que el siguiente command, un formulario submit() , continúe. Por lo tanto, la página cambiará después de que se muestre la alerta, pero no esperará hasta que el usuario haya hecho clic en Aceptar.

¿Hay algo como esto o es solo una de esas cosas imposibles?

Puede hacer la alerta en un setTimeout (que es un time de espera muy corto) ya que setTimeout es asynchronous:

 setTimeout("alert('hello world');", 1); 

O para hacerlo correctamente, realmente muestra usar un método en lugar de una cadena en su setTimeout:

 setTimeout(function() { alert('hello world'); }, 1); 

De lo contrario, se abrirá a ataques de inyección de JavaScript. Cuando pasa una cadena, se ejecuta a través de la function de eval JavaScript.

Si ya usas JQuery, http://docs.jquery.com/UI/Dialog es fácil de usar y tiene styles muy buenos.

Puede que no sea lo que está buscando, pero podría ser apropiado usar window.status = 'foo'.

Utilizo esto mucho en una de mis aplicaciones web para una intranet. También el enfoque setTimeout también funciona, pero puede bloquearse si el browser está ocupado en una tarea intensa. Sin embargo, la actualización de la barra de estado siempre es inmediata.

Esto requiere que los espectadores tengan la configuration de que javascript puede cambiar la barra de estado, siempre el caso si se trata de un sitio confiable.

En este caso, sería más apropiado usar DHTML y JavaScript para visualizar dinámicamente un post, ya sea en un elemento HTML simple, o algo que se parezca más a un dialog (pero no lo es). Eso te daría el control que necesitas. Todos los principales frameworks de JavaScript (YUI, Dojo y otros) le daría la capacidad de mostrar un post de forma asincrónica.

No confiablemente Use un div en la nueva página.

El 98% del time hay una forma de mover su script de post para que llame después de que se ejecute todo lo demás. Para ese otro 2%, me gusta usar divs flotantes que se parecen a esto. A continuación, puede cambiar su CSS para que coincida con el estilo de su aplicación / website o para que se vea más como una window emergente estándar.

 /*HTML*/ <div class="floatingDiv" id="msgBox" style="visibility:hidden"></div> /*javaScript*/ function openWindow(id){ "use strict"; document.getElementById(id).style.visibility = 'visible'; } function closeWindow(id){ "use strict"; document.getElementById(id).style.visibility = 'hidden'; } function myMsgBox(TITLE,MESSAGE) { "use strict"; document.getElementById("msgBox").innerHTML = "<a href=\"javascript:closeWindow('msgBox')\" style=\"float:right\"><img src=\"imgs/close.png\" onmouseover=\"src='imgs/closeOver.png'\" onmouseout=\"src='imgs/close.png'\"/ alt=\"[close]\"></a><h2 style=\"text-align:center; margin-top:0px;\">" + TITLE + "</h2><hr><p align=\"left\">" + MESSAGE + "</p>"; openWindow("msgBox"); } /*CSS*/ .floatingDiv { position:absolute; z-index:10000; left:33%; top:250px; width:33%; background-color:#FFF; min-width:217px; text-align: left; border-radius: 10px 10px; border:solid; border-width:1px; border-color:#000; vertical-align:top; padding:10px; background-image: -ms-linear-gradient(top, #CCCCCC 0%, #FFFFFF 25px, #FFFFFF 100%); background-image: -moz-linear-gradient(top, #CCCCCC 0%, #FFFFFF 25px, #FFFFFF 100%); background-image: -o-linear-gradient(top, #CCCCCC 0%, #FFFFFF 25px, #FFFFFF 100%); background-image: -webkit-linear-gradient(top, #CCCCCC 0%, #FFFFFF 25px, #FFFFFF 100%); background-image: linear-gradient(to bottom, #CCCCCC 0%, #FFFFFF 25px, #FFFFFF 100%); box-shadow:3px 3px 5px #003; filter: progid:DXImageTransform.Microsoft.Shadow(color='#000033', Direction=145, Strength=3); }