我有一个项目,我必须像这样动态加载jQuery:
(function() {
var scriptOnLoad = function() {
jQuery.noConflict();
// Do my stuff here
};
var script = document.createElement('script');
script.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js";
script.onload = scriptOnLoad;
script.onreadystatechange = function () {
if ( script.readyState == 'loaded' || script.readyState == 'complete' )
scriptOnLoad();
};
document.getElementsByTagName('head')[0].appendChild(script);
})();
该网站还使用Prototype,应使用.noConflict()
覆盖。
然而在IE9中,有时会发生使用变量$
的其他JS代码(不是我的,我无法控制它)失败,因为它仍然设置为jQuery而不是Prototype的功能。
我认为这是一个计时问题,并且IE在加载jQuery和执行readystatechange
事件处理程序之间执行其他JavaScript。任何人都可以确认是否是这种情况吗?
这可能是什么解决方案?我唯一能想到的就是使用我自己修改的jQuery副本,它不会首先覆盖$
。
答案 0 :(得分:0)
你可以连接jquery和jQuery.noConflict();在一个文件中加载它而不需要脚本加载处理程序。
答案 1 :(得分:-2)
不确定,但您可以尝试在$ j = jQuery.noConflict()等变量中初始化jquery,并使用$ j代码。