我需要动态地和顺序地加载一些js文件(即第一个脚本,第三个脚本,第二个脚本等)加载完成后的第二个脚本。动态脚本加载的最佳方式
问题:如何在一个脚本已经加载检测?我遇到了onload事件的问题 - 它不会在IE8中触发。阅读this后,我试图订阅的onreadystatechange并写了非常难看的代码加载脚本:
function loadScript(url, callback) {
var isLoaded = false;
var script = document.createElement('script');
script.onreadystatechange = function() {
if ((script.readyState == 'complete' || script.readyState == 'loaded') && !isLoaded) {
if (callback) callback();
}
};
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', url);
document.head.appendChild(script);
};
您能否提供更好的跨浏览器解决方案,而这样的把戏?
UPD: 感谢您的回答。如果我还需要加载jquery.js(例如,客户端有旧版本),我应该怎么做?
关于你提到的更新:为什么不包括库加载脚本(比如jQuery的)像任何其他JavaScript文件: 我看不到一个简单的方法或动态添加要用来动态加载脚本的库的必要性。 – Preli
@Preli,它将被嵌入到另一个具有一个脚本和一个div标签的站点。 – 2xMax