ASP.NET母版页和可选的Jquery脚本

时间:2012-06-12 00:46:39

标签: jquery asp.net

我正在使用母版页,并且在某些页面中引用了JQuery,但并非所有页面都引用了JQuery。我正在添加一些使用客户端JQuery的用户控件,因此需要在使用它们的页面中包含对jQuery库的引用。

显然有很多方法可以达到这个目的,但我想知道以下技术相对优点的缺点(或者确实存在更好的技术):

  1. 将一个脚本元素(通过创建具有相关属性的HTMLgenericControl)添加到标题controlCollection - cons - >如果页面和一些用户控件都使用jquery,则可以向客户端提供指向同一文件的多个脚本元素。这真的是一个劣势吗?浏览器会尝试下载几个副本吗?

  2. 添加一个masterPage布尔属性jQueryLib&仅在尚未添加脚本元素时才添加它。缺点 - 在masterpages的情况下,我无法在ASP中设置属性,因为我可以使用用户控件。因此,所有页面都需要更多的代码隐藏而不是简单的<%@ Page jQueryLib =“true”>

  3. 如果jQuery ==='undefined',使用一些相当简单的客户端javascript加载jQuery并在加载库后运行相关脚本。缺点 - 如果在一个页面上使用了许多用户控件,则指向执行此操作的javascript实用程序函数的脚本标记仍会多次出现在标题中。但是,作为一个优点,这个文件比jQuery库小很多。

  4. 只需将脚本引用放在母版页中,即使只有以管理员身份登录的那些需要任何jquery功能。

  5. 一如既往 - 非常感谢你的想法,为我对所有html和asp的业余知识道歉。

1 个答案:

答案 0 :(得分:1)

您只能使用以下内容为管理员添加jQuery到母版页:

服务器端

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);
}