Показать сообщение отдельно
  #1 (permalink)  
Старый 09.11.2009, 15:53
Аватар для HelpeR
Профессор
Отправить личное сообщение для HelpeR Посмотреть профиль Найти все сообщения от HelpeR
 
Регистрация: 21.10.2008
Сообщений: 241

DOMContentLoaded и defer
Искал в сети как отловить событие загрузки 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? И можете чуть подробнее пояснить, что сделали в однок. для ИЕ?
Заранее спасибо!
Ответить с цитированием