将ScriptReference添加到动态脚本
本文关键字:动态 脚本 添加 ScriptReference | 更新日期: 2023-09-27 18:00:35
我想让数据库中的文本在Javascript中可用。我制作了Texts.aspx,它输出Javascript代码,我想包含它。包含必须按照正确的顺序进行,因为Texts.aspx使用其他Javascript文件中的函数。我试着给这个aspx文件添加一个ScriptReference,但这破坏了它。以下代码在ScriptResource.axd.上出现404错误
<asp:ScriptManager runat="server" EnableScriptGlobalization="true">
<CompositeScript>
<Scripts>
<asp:ScriptReference Path="~/Scripts/textFunctions.js" />
<asp:ScriptReference Path="~/Scripts/Texts.aspx" />
<asp:ScriptReference Path="~/Scripts/useTexts.js" />
</Scripts>
</CompositeScript>
</asp:ScriptManager>
如何包含动态生成的Javascript文件?
请使用IHttpHandler而不是标准的aspx页面,因为它才是您真正想要的。如果必须使用aspx文件,请确保只返回javascript内容,并将内容类型设置为javascript的内容类型。
例如:
public class Texts : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/javascript";
context.Response.Write("var texts = { Some: 'some text here' }");
}
public bool IsReusable
{
get
{
return false;
}
}
}
在master或aspx 中
<asp:ScriptManager runat="server" ID="sm">
<Scripts>
<asp:ScriptReference Path="/Scripts/jquery-1.4.1.js" />
<asp:ScriptReference Path="/texts.ashx" />
</Scripts>
</asp:ScriptManager>
最后你可以确认它是有效的(你也会在firebug中看到你的ashx文件被正确地识别为javascript)
<script type="text/javascript" language="javascript">
alert(texts.Some);
</script>
不,这是不可能的。ScriptReference引用一组脚本,然后从磁盘读取这些脚本,因此不可能对HTTP位置进行ScriptReference。