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