8

Deseo utilizar el plugin jGrowl para jQuery (http://stanlemon.net/projects/jgrowl.html#samples) para visualizar algunos mensajes en una página. Para ello, llamo el método ScriptManager.RegisterClientScriptBlock así:Problema con ScriptManager.RegisterClientScriptBlock y jQuery en Internet Explorer 8

ScriptManager.RegisterClientScriptBlock(this, typeof(Page), Guid.NewGuid().ToString(), 
    "$.jGrowl('" + message + "');", true); 

El código funciona perfecto en Firefox/Chrome/Safari. Sin embargo, en Internet Explorer no veo la notificación y no aparece ningún error de Javascript.

Trabajo en Windows 7 y tengo Internet Explorer 8 Beta (versión 8.0.7000.0) y tengo el mismo "error" en el modo de compatibilidad.

¿Cómo puedo resolver este problema?

Respuesta

12

Este problema se produce porque IE8 espera que todos los elementos DOM se carguen antes de que se puedan realizar modificaciones en el DOM. Pude duplicar el problema que describiste con jGrowl.

Para solucionarlo, acabo de modificar su secuencia de comandos para que la llamada a jGrowl suceda una vez que el documento esté listo. Aquí está el código actualizado:

ScriptManager.RegisterClientScriptBlock(this, typeof(Page), 
    Guid.NewGuid().ToString(), 
    "$(function(){$.jGrowl('" + message + "');});", true); 
+0

Gracias por su respuesta. Intenté arreglarlo, pero todavía no está funcionando. ¿Podría ser por el hecho de que tengo un panel de actualización en la página? –

+0

Probé este código con un panel de actualización y funcionó bien. ¿Copiaste/pegaste el código de arriba? ¿Estás recibiendo errores de Javascript en el navegador? –

+0

Si después de hacer esto, aún tiene un problema, es posible que deba actualizar a la versión final de IE8 en lugar de la versión Beta. –

2

agregar <form runat="server" id="form1"> a la página. Funcionará ...

0

Si no está mal, creo que tiene que agregar esto en la página del lado del cliente.

<script language="javascript" type="text/javascript" id="forModalPopUp"> 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_initializeRequest(InitializeRequest); 
    prm.add_endRequest(EndRequest); 
    function InitializeRequest(sender, args) { 
    } 
    function EndRequest(sender, args) { 
    } 
</script> 

Para más detalles, echar un vistazo a this.

Cuestiones relacionadas