javascript 의 domReady 함 수 를 다시 정리 합 니 다 (IE9 로 업데이트)
24946 단어 JavaScript
실천 의:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1>domReady</h1>
<div id="J_testDiv">
</div>
<script type="text/javascript">
/*
* domReady
* Cross Browsers DOMContentLoaded Event Method
* @param fn {Function} the DOMContentLoaded Callback Function
* @author Doomin | http://joy-studio.com
* @updata 2011-03-24
*/
var domReady = (function(){
var doc = document, branch = document.addEventListener ? 'w3c' : 'ie678'; //branching flag
var _domReady = {
// When _domReady.done is true,all 'fn' will be invoked immediately.
done: false,
// The stack which all functions will be pushed into
fn: [],
// push callback functions
push: function(fn){
if (!_domReady.done) {
// only bind once
if (_domReady.fn.length === 0) {
_domReady.bind();
}
_domReady.fn.push(fn);
}
else {
fn();
}
},
// The Real DOMContentLoaded Callback Function
ready: function(){
// Flag DOMContentLoaded Event was Done over
_domReady.done = true;
var fn = _domReady.fn;
for (var i = 0, l = fn.length; i < l; i++) {
fn[i]();
}
_domReady.unbind();
_domReady.fn = null;
},
bind: {
w3c: function(){
doc.addEventListener('DOMContentLoaded', _domReady.ready, false);
},
//IE :http://javascript.nwbox.com/IEContentLoaded/
ie678: function(){
var done = false, // only fire once
init = function(){
if (!done) {
done = true;
_domReady.ready();
}
};
// polling for no errors
(function(){
try {
// throws errors until after ondocumentready
doc.documentElement.doScroll('left');
}
catch (e) {
setTimeout(arguments.callee, 20);
return;
}
// no errors, fire
init();
})();
// trying to always fire before onload
doc.onreadystatechange = function(){
if (doc.readyState == 'complete') {
doc.onreadystatechange = null;
init();
}
};
}
}[branch],
unbind: {
w3c: function(){
doc.removeEventListener('DOMContentLoaded', _domReady.ready, false);
},
ie678: function(){/* Nothing to do */
}
}[branch]
};
return _domReady.push;
})();
function addP(txt){
var div = document.getElementById('J_testDiv');
var p = document.createElement('p');
var text = document.createTextNode(txt + ' > ' + new Date().getTime());
p.appendChild(text);
div.appendChild(p);
}
// DOMContentLoaded , domReady
domReady(function(){
addP('DOMContentLoaded , ');
});
// DOMContentLoaded , domReady
domReady(function(){
addP(' ');
});
// 2 , DOMContentLoaded domReady
setTimeout(function(){
domReady(function(){
addP('2 , ');
});
}, 2000);
</script>
</body>
</html>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.