2012-06-12 36 views
1

我正在使用母版頁,並且在某些頁面中引用了JQuery,但並非在所有頁面中都引用了該頁。我添加了一些使用客戶端JQuery的用戶控件,因此需要在使用它們的頁面中包含對jQuery庫的引用。ASP.NET母版頁和可選的Jquery腳本

顯然有很多方法可以實現對以下技術的相對優點缺點,但我想知道的想法(或者如果確實是一個更好的技術存在):

  1. 添加腳本元素(通過創建一個如果頁面和一些用戶控件都使用jquery,那麼指向相同文件的幾個腳本元素可能會被提供給客戶端。這真的是一個缺點嗎?瀏覽器會嘗試下載幾個副本嗎?

  2. 添加一個masterPage布爾屬性jQueryLib &只有在尚未添加腳本元素的情況下才添加腳本元素。缺點 - 在masterpages的情況下,我無法在ASP中設置屬性,因爲我可以通過用戶控件進行設置。因此,所有的頁面都需要更多的隱藏代碼,而不是一個簡單的<%@頁jQueryLib =「真」>

  3. 使用一些非常簡單的客戶端的JavaScript加載jQuery和運行相關的腳本庫被加載,如果jQuery的後= == '未定義'。缺點 - 如果在一個頁面上使用多個用戶控件,則指向JavaScript實用程序功能的腳本標記將多次保留在標題中。然而,作爲一個優勢,這個文件比jQuery庫要小得多。

  4. 即使只有以管理員身份登錄的用戶需要任何jQuery功能,只要將腳本引用放在母版頁中即可。

一如既往 - 非常感謝您的想法,我對所有html和asp的業餘知識表示歉意。

+1

你有沒有考慮只增加jquery動態如果用戶是管理員? –

回答

1

你可以只添加了jQuery母版使用類似以下管理員:

Serverside集團

protected bool administrator { get { return true; } } 

的Javascript

function pageLoad(sender, args) { 
    var administrator = "<%= administrator %>".toLowerCase() == "true" ? true : false; 

    if(administrator == true) 
     loadJQuery(); 
} 

function loadJQuery(){ 
    var scriptTag = document.createElement("script"); 
    var filePath = "jquery.js"; 

    scriptTag.onload = function(loadEvent){ 
     // This function runs when jquery is loaded 
    } 

    scriptTag.type = "text/javascript"; 
    scriptTag.src = filePath; 
    document.getElementsByTagName("head")[0].appendChild(scriptTag); 
}