2010-02-12 11 views
8

¿Cómo activar y desactivar la visiblity de una etiqueta de¿Cómo se puede alternar la visibilidad de una etiqueta de script?

<script> 

en el marcado? Tienen el siguiente código JavaScript en mi página maestra:

<script type="text/javascript"> 
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
      document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 
</script> 
<script type="text/javascript"> 
    try { 
    var pageTracker = _gat._getTracker("UA-108xxxx-2"); 
    pageTracker._trackPageview(); 
    } catch (err) { } 
</script> 
</body> 

¿Cuál es el mejor enfoque para el bloque serverside este script desde que se queden, si yo quiero que (como el funcionamiento en modo de depuración)

Respuesta

9

ponerlo dentro de un bloque del lado del servidor if.

Por ejemplo:

<% if (!Request.IsLocal) { %> 
<script type="text/javascript"> 
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
      document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 
</script> 
<script type="text/javascript"> 
    try { 
    var pageTracker = _gat._getTracker("UA-108xxxx-2"); 
    pageTracker._trackPageview(); 
    } catch (err) { } 
</script> 
<% } %> 
+0

, gracias, creo que me quedo con éste;) – citronas

7

Prueba esto:

<asp:PlaceHolder id="PHScripts" runat="server"> 
    <script type="text/javascript"> 
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 
    </script> 
    <script type="text/javascript"> 
    try { 
    var pageTracker = _gat._getTracker("UA-108xxxx-2"); 
    pageTracker._trackPageview(); 
    } catch (err) { } 
    </script> 
</asp:PlaceHolder> 

En su página:

PHScripts.Visible = !IsDebugMode; 

Para la configuración, uso una clase estática llamada AppSettings, y tienen un simple propiedad como esta junto al resto para determinar si es una compilación de depuración:

public static bool IsDebugMode 
{ 
    get 
    { 
#if DEBUG 
    return true; 
#else 
    return false; 
#endif 
    } 
} 

A continuación, en cualquier lugar de la aplicación:

AppSettings.IsDebugMode; 
+0

Creo que quería decir 'PHScripts.Visible = IsDebugMode;' –

+0

@ çağdaş - Se ha corregido, gracias!Normalmente estoy mostrando más sobre la depuración en todo caso. –

1

Hay muchas maneras de hacer esto. Una de ellas sería añadir en una directiva de preprocesador, poner su secuencia de comandos en un archivo externo y registrar el script desde el código subyacente:

código detrás:

protected void Page_Load(object sender, EventArgs e) 
{ 
#if !DEBUG 
    Page.ClientScript.RegisterClientScriptInclude("myScript", "/path/to/my/script.js"); 
#endif 
} 

lo anterior supone que movió su guión a /path/to/my/script.js archivo ....

Aquí es una buena referencia sobre la directiva de preprocesador #if y cómo se usa: http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx

-1

que te pueden ser todos más de lo que complica el problema.

Por qué no sólo y un ID y una etiqueta runat a la secuencia de comandos:

<script id="DebugScript" runat="server"> 
var x = 1; 
</script> 

Luego de palanca en el código subyacente?

If bDebug Then 
    DebugScript.visible = True 
Else 
    DebugScript.visible = False 
End If 
+1

Intenté esto primero, pero de alguna manera obtuve errores de compilación con el script que publiqué anteriormente. – citronas

+1

Esta es una solución obvia a primera vista, pero desafortunadamente '

0

sé que esto era preguntado hace un tiempo pero bueno-ho ...

por qué no utilizar una etiqueta <asp:Literal />? Como puede controlar el estado Visible de esto.

La ventaja de esto es que no se procesa contenido adicional (no se estropea si necesita un <script> en la etiqueta <head>) y no tiene ningún código en línea.

Saludos

Cuestiones relacionadas