我正在使用母版页,并且在某些页面中引用了JQuery,但并非所有页面都引用了JQuery。我正在添加一些使用客户端JQuery的用户控件,因此需要在使用它们的页面中包含对jQuery库的引用。
显然有很多方法可以达到这个目的,但我想知道以下技术相对优点的缺点(或者确实存在更好的技术):
将一个脚本元素(通过创建具有相关属性的HTMLgenericControl)添加到标题controlCollection - cons - >如果页面和一些用户控件都使用jquery,则可以向客户端提供指向同一文件的多个脚本元素。这真的是一个劣势吗?浏览器会尝试下载几个副本吗?
添加一个masterPage布尔属性jQueryLib&仅在尚未添加脚本元素时才添加它。缺点 - 在masterpages的情况下,我无法在ASP中设置属性,因为我可以使用用户控件。因此,所有页面都需要更多的代码隐藏而不是简单的<%@ Page jQueryLib =“true”>
如果jQuery ==='undefined',使用一些相当简单的客户端javascript加载jQuery并在加载库后运行相关脚本。缺点 - 如果在一个页面上使用了许多用户控件,则指向执行此操作的javascript实用程序函数的脚本标记仍会多次出现在标题中。但是,作为一个优点,这个文件比jQuery库小很多。
只需将脚本引用放在母版页中,即使只有以管理员身份登录的那些需要任何jquery功能。
一如既往 - 非常感谢你的想法,为我对所有html和asp的业余知识道歉。
答案 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);
}