1

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

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

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

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

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

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

与往常一样 - 非常感谢您的想法,并为我对所有 html 和 asp 的业余知识表示歉意。

4

1 回答 1

1

您只能使用以下内容将 jQuery 添加到管理员的 MasterPage:

服务器端

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);
}
于 2012-06-12T01:16:19.437 回答