Asp.net 防止jQuery多重引用
我正在开发DNN模块,在一些模块中使用jQuery,我将jQuery引用添加到每个ascx文件的顶部,顺便说一句,当用户每次添加模块时都将多个模块添加到其引用的页面时,这种情况会出现一些错误,当我从使用jQuery的另一个模块的底部删除引用时,它们工作得很好,有没有办法防止多次引用jQuery?我的意思是如果它在页面上被引用,它就不会再引用了。谢谢。您可以制作一个小脚本来检查页面上是否有jQuery,只有当jQuery不存在时,才加载它:Asp.net 防止jQuery多重引用,asp.net,jquery,dotnetnuke,Asp.net,Jquery,Dotnetnuke,我正在开发DNN模块,在一些模块中使用jQuery,我将jQuery引用添加到每个ascx文件的顶部,顺便说一句,当用户每次添加模块时都将多个模块添加到其引用的页面时,这种情况会出现一些错误,当我从使用jQuery的另一个模块的底部删除引用时,它们工作得很好,有没有办法防止多次引用jQuery?我的意思是如果它在页面上被引用,它就不会再引用了。谢谢。您可以制作一个小脚本来检查页面上是否有jQuery,只有当jQuery不存在时,才加载它: // 'load-jquery.js' window.o
// 'load-jquery.js'
window.onload = function () {
if (window.jQuery === undefined) {
var script = document.createElement('script');
script.src = 'path/to/jquery.min.js';
document.getElementsByTagName('head')[0].appendChild(script); // load jQuery
}
};
如果在高冲突环境中加载jQuery,请尝试使用名称空间jQuery
SOMETHING = {
jQuery: jQuery,
$: $
}
然后通过某物调用jQuery。$或某物.jQuery。只要记住,一旦加载了您想要的jQuery版本,就要执行名称空间,否则最终会得到错误的名称空间。如果您有权访问jQuery文件,最简单的方法是在文件末尾附加名称空间代码。如果您使用的是DNN 5.x,则应通过调用
DotNetNuke.Framework.jQuery.RequestRegistration()
使用DNN核心版本的jQuery
如果您只处理自己模块中的冲突,则可以在代码中添加脚本,然后检查是否已添加该脚本。我们将jQuery手动添加到标头中(创建一个通用HTML控件,并将其添加到Page.header.Controls
),然后调用Page.ClientScript.RegisterClientScriptBlock()
,以创建一个要调用的脚本块(这样它就不会干扰DNN的JavaScript内容)。然后,您可以在对Page.ClientScript.IsClientScriptBlockRegistered()
的调用中包装整个添加jQuery的调用,以便只添加一次