Como llamar código JavaScript en tiempo de Ejecución

Conozco tres formas de llamar código JavaScrip en tiempo de ejecución:

1.- RegisterStartupScrip o RegisterClientScriptBlock.

Ambos métodos emiten bloques de secuencias de comandos JavaScript; el saber cual de los dos utilizar es cuestión de conocer como funcionan y donde queremos que se ejecute el código.



RegisterStartupScrip emite y ejecuta el bloque de secuencias de comandos al final de la página y se registra utilizando su parámetro “Key” de modo que sólo se emite una sola vez, incluso cuando haya varias instancias del control o llamadas a la función que lo contiene en la página.

Este método lo he encontrado realmente útil cuando necesito ejecutar alguna acción sobre elementos html que se encuentran en la página, como puede ser el cambiar de color una fila de datos en una tabla html que he creado dinámicamente en tiempo de ejecución. Es ideal para interactuar con elementos html ya que como se ejecuta al final, nos estamos asegurando de que ya estén dibujados y listos para interactuar con ellos o bien podemos validar si existen o no antes de hacer nada.

La forma en la que se invoca al método RegisterStartupScrip es la siguiente:

RegisterStartupScript("Key", “script”);

Donde

Key = Clave única que identifica un bloque de secuencias de comandos.
Script = Contenido de la secuencia de comandos que se enviará al cliente.

Ejemplo:
string script = "<script language=\"JavaScript\">" ;
script += "alert(‘Hola Mundo’)";
script += "</script>";
RegisterStartupScript("alert", script);
Para usarlo dentro de código .Net, lo más recomendable es colocar todo el código dentro de una función, para que después pueda ser llamada desde cualquier parte de nuestra aplicación o clase.

private void alert(){
string script = "<script language=\"JavaScript\">" ;
script += "alert(‘Hola Mundo’)";
script += "</script>";
RegisterStartupScript("alert", script);
}
RegisterClientScriptBlock al igual que RegisterStartupScrip, también se registra utilizando su parámetro “Key” de modo que sólo se emite una sola vez, incluso cuando haya varias instancias del control o llamadas a la función que lo contiene en la página. La diferencia es que se emite al principio de la página.

Este método lo he encontrado útil para ejecutar funciones JavaScript que ya existen en la página y para cambiar valores de variables que afectan ciertas partes de scripts JavaScript (como es el caso de los menús; muchos de ellos los puedes mostrar u ocultar cambiando de valor una variable.)

La forma en la que se invoca al método RegisterClientScriptBlock es la siguiente:

RegisterClientScriptBlock("Key", “script”);

Donde

Key = Clave única que identifica un bloque de secuencias de comandos.

Script = Contenido de la secuencia de comandos que se enviará al cliente.

Ejemplo:
string script = "<script language=\"JavaScript\">" ;
script += "AbrirPopUp();";
script += "</script>";
RegisterClientScriptBlock("validar", script);
2.- La propiedad Attributes
Regresa la colección de atributos aplicados a un WebControl. Además establece u obtiene los elementos de atributo individuales en dicha colección.

En cristiano, mediante esta propiedad podemos establecer atributos HTML que vivirán en la cabecera de la definición HTML de dicho control y también nos permite establecer código JavaScript que es lo que en este momento nos interesa.

Ejemplo: Supongamos que tenemos un CommandButton llamado Alerta, el cual su única función es desplegar un alert de JavaScript cuando se hace click en el.

Lo único que tenemos que hacer para conseguir esta funcionalidad es agregar el código en JavaScript en la propiedad Attributes y enlazárselo al evento HTML onclik:

Alerta.Attributes.Add(“onclik”,” javascript: alert(‘Hola Mundo’)”);

Este código por lo general se coloca en el evento Page_Load del WebForm que se valla a utilizar.

3.- El control Label.

Esta es la forma mas sencilla de ejecutar código JavaScript en el render de una pagina aspx, simplemente escribes tu script en una variable string y se lo asignas a la propiedad Text de la etiqueta. Asi que asegúrate de colocar un control Label en el lugar preciso donde quieras que se ejecute el código JavaScript.

Para este ejemplo supongamos que tenemos un control Label, llamado lblTest:
string script = "<script language=\"JavaScript\">";
script += "alert(\"Hola Mundo\")";
script += "</script>";
lblTest.Text = script;
Al momento en que se ejecute la página aspx y dependiendo de donde hayas colocado el control Label, la alerta se mostrara.

Asegúrate de colocar siempre los tag de script "<script language=\"JavaScript\"> y "</script>" si quieres que el código se ejecute.

4 comentarios:

Anónimo dijo...

Todo calro, pero porque se coloca esto:language=\"JavaScript\">
enves de: language="JavaScript">

CrAsH-DMX dijo...

Hola Orlando, pues simplemente por que estas creando un string de C# que contiene la cadena language=\"JavaScript\" y para c# el \" lo interpreta en una caden de caracteres como "; al final si vemos el contenido de la cadena se mostrara algo como:language="JavaScript"

Anónimo dijo...

Hola, muchas gracias, tus ejemplos me ayudaron mucho =)

Anónimo dijo...

me parece excelente tu post, Sigue Adelante gracias esta excelente hace rato lo buscaba