Gerardo Contijoch

Experiencias del día a día trabajando con .NET – ASP.NET, C#, ASP.NET MVC y demas…

Posts Tagged ‘scriptmanager’

Sys.ScriptLoadFailedException al intentar cargar un script dinámicamente con ScriptManager

Posted by Gerardo Contijoch en diciembre 16, 2008

Hoy estaba trabajando en un site que usa ASP.NET AJAX y me encontré con el siguiente error:

Sys.ScriptLoadFailedException: The script ‘http://localhost:49573/scripts/Script.js’ could not be loaded.

Ese es un script que yo cargo dinámicamente mediante el ScriptManager de la siguiente manera:

ScriptManager.RegisterClientScriptInclude(pagina, typeof(Page), "miScript", "scripts/Script.js");

Busqué códigos de ejemplos en internet y todos eran iguales al mío, no encontraba el error hasta que me topé con este post de Bill Robertson.

Resulta que ASP.NET AJAX carga los scritps registrados de esta manera de forma asincrónica y es necesario notificar la finalización de la carga de cada script para que todo funcione como debería. Para realizar la notificación simplemente hay que agregar el siguiente código al final del archivo js al que hagamos referencia:

   1: if(typeof(Sys) != "undefined" && typeof(Sys.Application) != "undefined") {
   2:    Sys.Application.notifyScriptLoaded();
   3: }

La validación de la línea 1 no es necesaria en realidad, pero si usamos este archivo en un site donde no se usa ASP.NET AJAX, la línea 2 va a fallar (debido a que puede no existir el objeto Sys).

Una vez hecho eso, el site comenzó a funcionar como siempre y el script se cargó correctamente.

¡Nos vemos en el próximo post!

Publicado originalmente en https://gerardocontijoch.wordpress.com.

Anuncios

Posted in ASP.NET, Desarrollo Web, Javascript | Etiquetado: , , , | 2 Comments »