gpt4 book ai didi

jquery - 如何检查客户端脚本资源是否在页面中注册?

转载 作者:行者123 更新时间:2023-12-01 01:37:11 25 4
gpt4 key购买 nike

我开发了一个自定义控件(不是用户控件),它使用一些 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 已经在项目中,那么我最终会得到一个包含两次对库的调用的页面,如下所示:

<!-- 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 不可用,请使其可用。

<script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.1.min.js"><\/script>')</script>

关于jquery - 如何检查客户端脚本资源是否在页面中注册?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10336280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com