>// css補充
function loadCss (cssUrl, callback) {
var elem, bl,
isExecuted = falsese> isExecuted = falsese > null ) {
return String(cssUrl);
}
elem = document.createElement '), ); allback) === 'function' ) {
bl = true;
}
// forie
| elem.readyState === '已載入' || elem.readyState === '完成' ) {
if (bl && !isExecuted) { }
elem.onreadystatechange = statechange = 句柄;
// 對於非ie
if (bl && !isExecuted) {
elem.onload = 回呼;
isExecuted = true;
} elem.Tagh_copermp. 0].appendChild( elem);
}
// js循環載入
function loadScript(scriptUrl, callback) {
var elem, bl,
isExecuted = false; (scriptUrl == null) {
return String(fn);
}
elem = document.createElement('script') bl = true;
}
// 對於ie
function hand if (status === '已載入' || status === '完成') {
isExecuted = true;
}
🎜> }
}
elem.onreadystatechange = 句柄;
em.onload = 回呼;
isExecuted = true;
}
elem.src = scriptUrl;
document.getElementsByTagName('head')[0].appendChild(elem);
PS: 在判斷link,script元素是否加載完畢,主要依靠load事件;而在ie9以下瀏覽器中,並沒有load事件,ie為它們都添加了一個readystatechange事件,通過判斷
元素的readyState狀態確定元素是否已經載入完畢;而奇怪的是,在ie9(還可能存在其他瀏覽器版本)中,元素既有load事件又有readystatechange事件,因此在程式碼中加入了一個變數isExecuted,如果執行過回調,那麼就不再執行,避免回調執行兩次。
三、調用方式
loadCss('http://www.jb51.net/apps/tbtx/miiee/css/base.css', function(){
console.log('css載入完成') ;
});
loadScript('http://www.jb51.net/apps/tbtx/miiee/js/jQuery.js', function(){
console.log('js載入完成');
});
ready(function(){
console.log('dom is ready!');
});