2010-01-06 18 views
6

He estado trabajando en webforms asp.net y he estado haciendo un UserControl que depende de un pequeño bit de javascript que está en un archivo externo.asp.net garantizar javascript se carga una sola vez

Quiero ser capaz de poner una referencia al javascript dentro del UserControl para asegurar que se cargue en la página, pero el problema es que el UserControl puede aparecer varias veces en una página, así que solo quiero que el script estar cargado con la primera instancia de UserControl.

¿Hay alguna manera fácil de hacerlo en Webforms de ASP.NET?

Respuesta

9

Utilice los ClientScriptManager 's RegisterClientScript() métodos para manejar esto. En su caso, dado que está incluyendo la secuencia de comandos desde un archivo externo, use RegisterClientScriptInclude().

Alternativamente, si está utilizando UpdatePanels, use los métodos ScriptManager equivalentes Register...().

+0

exactamente lo que estaba buscando. Gracias – lomaxx

-1

Referencia la secuencia de comandos en el CABEZAL de la página sí mismo.

<html> 
    <head> 
     ... 
     <script src="<name of file>" type="text/javascript"></script> 
     ... 
    </head> 
    <body> 
     ... 
    </body> 
</html> 
0

También puede manejar este problema en el archivo JS, si controla su contenido.

var myObj = myObj || {}; // Variable to namespace your work 

// Make sure we do our work only once 
if (!(myObj.token)) { 

    // do our work here... 

    myObj.token = {}; // this ensure we won't enter the if block the next time 

} 
+0

No estoy seguro de cómo esto asegurará que un archivo de script solo se cargue una vez. Verificará si se ha cargado un script, pero ¿podría explicar cómo se asegurará de que el script no se cargue varias veces? – lomaxx

+0

Sí, técnicamente el script se incluye dos veces en la página DOM y será procesado dos veces por el navegador. La diferencia es que, en el segundo pase, no ocurre nada porque myObj.token ya se ha definido. –

Cuestiones relacionadas