2012-05-06 36 views
7

Ésta es mi guión:Alerta tras página de carga

<% 
    if (TempData["Resultat"] != null){ 
%> 
<script type="text/javascript"> 
    alert('<%: TempData["Resultat"]%>'); 
</script> 
<% 
    } 
%> 

En este caso emergente se muestra antes de la página cargada, pero quiero que aparecen después de la página se ha cargado completamente. en HTML que es se parece a esto:

<body onload="happycode() ;"> 

pero no puedo usarlo en MVC tengo una página maestra para toda mi aplicación web

Respuesta

9

Si puede utilizar jQuery entonces usted puede poner la alerta en el interior la función $(document).ready(). se vería algo como esto:

<script> 
    $(document).ready(function(){ 
    alert('<%: TempData["Resultat"]%>'); 
    }); 
</script> 

Para incluir jQuery, incluya lo siguiente en la etiqueta <head> de su código:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script> 

Aquí está un ejemplo rápido en jsFiddle: http://jsfiddle.net/ChaseWest/3AaAx/

+0

otra pregunta en mi el caracter especial de alerta se muestra en el código ASCI como '& # 39' cómo decodificarlo – Chlebta

+0

¿Hay alguna manera de ver más código o quizás un ejemplo y voy a tratar de ayudar más? – Chase

+0

este es mi ejemplo de formulario de ViewData 'L'ajout de promotion à reussi' pero en la alerta la cadena showin es como esta mostrada así' L ' ajout de promotion à reussi' – Chlebta

3

Por qué puede ¿Lo usas en MVC?

En lugar de utilizar el método de carga corporal, use jQuery y espere a que se complete la función de preparación del documento.

+0

Es posible que OP no utilice MVC3 para afeitarse . –

+0

@Valamas editado – user1378687

3

Con el uso de jQuery para controlar el evento lista de documentos,

<script type="text/javascript"> 

function onLoadAlert() { 
    alert('<%: TempData["Resultat"]%>'); 
} 

$(document).ready(onLoadAlert); 
</script> 

O, aún más simple - poner el <script> al final de body, no en el head.

+0

(respuesta a la pregunta eliminada): sí, tuve varias sesiones de depuración, cuando 'console.log()' y depurador dieron resultados diferentes – zerkms

13

Hay tres formas.
El primero es poner la etiqueta de secuencia de comandos en la parte inferior de la página:

<body> 
<!--Body content--> 
<script type="text/javascript"> 
alert('<%: TempData["Resultat"]%>'); 
</script> 
</body> 

La segunda manera es crear un proceso de carga:

<head> 
<script type="text/javascript"> 
window.onload = function(){//window.addEventListener('load',function(){...}); (for Netscape) and window.attachEvent('onload',function(){...}); (for IE and Opera) also work 
    alert('<%: TempData["Resultat"]%>'); 
} 
</script> 
</head> 

se ejecutará una función cuando se carga la ventana .
Por último, la tercera forma es crear un evento readystatechange y comprobar el document.readyState actual:

<head> 
<script type="text/javascript"> 
document.onreadystatechange = function(){//window.addEventListener('readystatechange',function(){...}); (for Netscape) and window.attachEvent('onreadystatechange',function(){...}); (for IE and Opera) also work 
    if(document.readyState=='loaded' || document.readyState=='complete') 
     alert('<%: TempData["Resultat"]%>'); 
} 
</script> 
</head> 
+0

La primera forma parece no funcionar. P.ej. Tengo una página con un script justo antes de '' y aparece 'alert' antes de que la página aparezca en la ventana del navegador; de hecho, la página no se carga hasta después de descartar la 'alerta '. – globewalldesk

1

Añadir el código de abajo en el PageLoad Evento:

ScriptManager.RegisterStartupScript(Page, this.GetType(), "myScript", "alert('OK Done.');", true); 
2
$(window).on('load', function() { 
alert('Alert after page load'); 
     } 
    });