我有一个项目,我必须像这样动态加载 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 副本,它$
一开始就不会覆盖。