Искал в сети как отловить событие загрузки DOM.
Нашел следующий два скрипта
1. Это я вырезал из js кода одноклассников
var d = document, t = this, safariTimeout;
if (/WebKit/i.test(navigator.userAgent)) {
safariTimeout = setInterval(function(){if (/loaded|complete/.test(d.readyState)) {clearInterval(safariTimeout); t.runHandlers() }}, 100);
} else if (d.addEventListener) {
d.addEventListener("DOMContentLoaded", function(){t.runHandlers()}, false);
} else if (d.all && !window.opera) {
var s = d.createElement("script");
s.setAttribute("type", "text/javascript");
s.setAttribute("src", "");
s.setAttribute("defer", "true");
s.onreadystatechange = function(){if (this.readyState == "complete") t.runHandlers()}
this.h.insertBefore(s, this.h.firstChild);
}
и второй
(function(i) {
var u = navigator.userAgent;
var e=/*@cc_on!@*/false;
var st = setTimeout;
if(/webkit/i.test(u)){
st(function(){
var dr=document.readyState;
if(dr=="loaded"||dr=="complete"){
i()
}
else{
st(arguments.callee,10);
}
},10);
}
else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){
document.addEventListener("DOMContentLoaded",i,false);
}
else if(e){
(function(){
var t=document.createElement('doc:rdy');
try{
t.doScroll('left');
i();
t=null;
}
catch(e){
st(arguments.callee,0);
}
})();
}
else{
window.onload=i;
}
})(init);
где init это название вызываемой функции при загрузке DOM. В коде одноклассников все ясно, а как тут реализовали проверку в ИЕ? и еще вопрос, всегда ли корректно работает аттрибут defer? И можете чуть подробнее пояснить, что сделали в однок. для ИЕ?
Заранее спасибо!