动态更改 C# 端的脚本标记源
dynamically changing the script tag source on C# side
如何从Page_Load
动态更改<script>
src
属性?
当我说动态时,我的意思是它是同一个页面Default.aspx
,但每次刷新都会引用不同的js
源。 选择js
文件背后的逻辑无关紧要,只是设置它的机制。
我试过了:
<script id="script1" runat="server" language="javascript" src="a.js" type="text/javascript"></script>
但是script1
在.cs
方面不可用。 我知道我可以通过使用 <% %>
标签在.aspx
端更改它,但我不想将我的逻辑像那样嵌入我的.aspx
中。 在Page_Load
.cs
方面一定有办法做到这一点吗?
在你的页面加载处理程序上,你可以有这样的东西
string csurl = null;
string csname = "myscript";
if (condition)
{
csurl = "~/a.js";
}
else
{
csurl = "~/b.js";
}
if (!Page.ClientScript.IsClientScriptIncludeRegistered(cstype, csname))
{
Page.ClientScript.RegisterClientScriptInclude(
this.GetType(),
csname,
ResolveClientUrl(csurl));
}
或
string csurl = null;
if (condition)
{
csurl = "a.js";
}
else
{
csurl = "b.js";
}
Literal script = new Literal();
script.Text = string.Format(
@"<script src=""{0}"" type=""text/javascript""></script>",csurl);
Page.Header.Controls.Add(script);
有几种方法可以做到这一点。一种方法是在代码隐藏中创建一个protected
或public
方法,该方法返回一个string
,它会根据您的条件返回指向Javascript的正确URL。 然后,只需从标记中调用该方法,如下所示:
<script language="javascript" src="<%=GetJavaScriptUrl() %>" type="text/javascript"></script>
此示例假定您在代码隐藏 GetJavaScriptUrl
中调用该方法。
我认为除了使用 <%= %>
之外,您别无选择。
除非有人知道不同(如果是这样,请发表评论,我会改变),否则在<script>
块上使用 runat="server"
属性将意味着该块将在服务器端执行。
更新
对不起,有点误解了你的问题。
我以为你是说你不想使用 <% %>
来设置<script>
块的src
属性。我现在明白你的意思是为每个文件创建单独的<script>
块,通过逻辑<%If x Then%><%Else%><%End If%>
块显示。
正如其他人已经说过的(我已经暗示过),您可以使用<%=GetSrcPath()%>
设置src
属性,并在代码隐藏中使用 GetSrcPath 方法中的逻辑。
只需使用脚本管理器:
例如,
string jsName = condition ? "a.js" : "b.js";
ScriptManager.GetCurrent(this).Scripts.Add(new ScriptReference(jsName));
- 如何动态更改脚本src
- 动态添加AngularJS脚本
- 动态创建的iframe中的window.onerror在lne 0处给出脚本错误
- 有没有一种方法可以用YepNope.js为脚本提供动态名称
- javascript动态内容与选择长运行脚本
- 使用appendChild()动态添加的脚本是按顺序执行还是并行执行
- 性能:动态脚本注入与服务器渲染脚本
- 如何在blogspot中加载java脚本(动态主题)
- 控制不止一次跳水的风格's风格使用java脚本动态,使用类
- 将背景图像更改为另一个由ajax调用脚本动态创建的图像
- 引用从以前加载的 jQuery 脚本动态加载的内容
- 如何在ASP.Net中使用java脚本动态调整页边距
- IE在添加到onclick处理程序时从缓存中获取脚本(动态添加)
- 为什么不是'这个CanvasJS脚本动态地改变变量
- 用调用RSS提要的脚本动态构建iframe
- 单击“Java脚本动态检查”复选框
- JS脚本动态加载不一致
- Google Apps脚本-动态添加删除UiApp表单元素
- 将脚本动态添加到某些页面
- 在由外部脚本动态创建的iframe中选择一个元素