如何切换
的可见性<script>
标记中的标记?在我的母版页中有以下javascript代码:
<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>
如果我想要这样做,服务器端阻止此脚本被阻止的最佳方法是什么(如在调试模式下运行)
答案 0 :(得分:9)
将其放在服务器端if
块中。
例如:
<% 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>
<% } %>
答案 1 :(得分:7)
试试这个:
<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>
在您的信息页中:
PHScripts.Visible = !IsDebugMode;
对于设置,我使用一个名为AppSettings的静态类,并在其余部分旁边有一个简单的属性,以确定它是否是一个调试版本:
public static bool IsDebugMode
{
get
{
#if DEBUG
return true;
#else
return false;
#endif
}
}
然后在应用中的任何地方:
AppSettings.IsDebugMode;
答案 2 :(得分:1)
有很多方法可以做到这一点。一种方法是添加预处理程序指令,将脚本放在外部文件中,并从后面的代码中注册脚本:
代码背后的代码:protected void Page_Load(object sender, EventArgs e)
{
#if !DEBUG
Page.ClientScript.RegisterClientScriptInclude("myScript", "/path/to/my/script.js");
#endif
}
以上假设您将脚本移至/path/to/my/script.js
file ....
以下是#if
预处理程序指令以及如何使用它的一个很好的参考:http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx
答案 3 :(得分:0)
我知道这是前一段时间被问过但是嘿嘿......
为什么不使用<asp:Literal />
代码?因为你可以控制Visible
状态。
这样做的好处是没有额外的内容呈现(如果<script>
标签中需要<head>
),并且没有任何内联,那就不会搞砸了代码。
此致
答案 4 :(得分:-1)
你们可能都会使问题复杂化。
为什么不只是脚本的ID和RunAt标记:
<script id="DebugScript" runat="server">
var x = 1;
</script>
然后在代码隐藏中切换它?
If bDebug Then
DebugScript.visible = True
Else
DebugScript.visible = False
End If