3
我开发了一个自定义控件(不是用户控件),它使用了一些jQuery脚本。如何检查客户端脚本资源是否在页面中注册?
我已经嵌入在控制的脚本作为嵌入式资源进入议会,并将它在网页OnPreRender事件注册的,就像这样:
protected override void OnPreRender(EventArgs e)
{
string controlScript = "Namespace.MyScript.js";
ClientScriptManager csm = this.Page.ClientScript;
csm.RegisterClientScriptResource(typeof(ResourceFinder), controlScript);
base.OnPreRender(e);
}
这个控制工程与jQuery的项目部署时库已经到位,但如果jQuery库不可用,该怎么办?我将如何检查库是否已经在项目中,如果没有,则将其嵌入到组件中,并从那里将其拉出。我的想法是这样的:
protected override void OnPreRender(EventArgs e)
{
ClientScriptManager csm = this.Page.ClientScript;
// Here I would need to check if jQuery is already registered
// but there is no such method like: IsClientScriptResourceRegistered
if (csm.IsClientScriptResourceRegistered("jQuery"))
{
string jQueryLib = "Namespace.jquery-1.7.2.min.js";
csm.RegisterClientScriptResource(typeof(ResourceFinder), jQueryLib);
}
string controlScript = "Namespace.MyScript.js";
csm.RegisterClientScriptResource(typeof(ResourceFinder), controlScript);
base.OnPreRender(e);
}
我知道我可以反正嵌入在装配jQuery库,但如果jQuery的已经在项目,然后我将最终得到一个页面两次调用libray,这样:
<!-- Project's jQuery lib -->
<script type="text/javascript" src="/scripts/jquery-1.7.2.min.js"></script>
<!-- DLL's duplicated jQuery lib: -->
<script type="text/javascript" src="/WebResource.axd?d=AP7y...r0bHQl"></script>
<!-- DLL Control's MyScript.js -->
<script type="text/javascript" src="/WebResource.axd?d=uTGR...ur15b"></script>
......这正是我想要避免的。
任何想法?
我想,也许代替注册jQuery库直接我能寄存器第一jQuery的可用性检查如[此的其他问题]表示的脚本块(http://stackoverflow.com/questions/1014203 /最好的方式使用的 - 谷歌托管的,jQuery的,但落回至我的托管库上-GO)。 – 2012-04-26 15:24:42