2016-07-14 2 views
-1

문서가 이미로드 된 경우에만 실행되는 코드를 실행하려고합니다 (로드 된 후 오른쪽 실행되는 코드가 아닌). JQuery가 아닌 것을 찾고 있습니다.윈도우가로드 된 경우에만 작업 수행

질문 전제 : 나는 페이지가 완전히로드되기 전에 실행되는 기능이 있습니다. 그러나이 함수는 이벤트를 전달하는 다른 함수를 호출합니다. 윈도우가 이미로드 된 경우에만 이벤트를 전달하기를 원합니다. 그렇지 않다면 배열에 저장하고 페이지가로드 된 후 디스패치합니다.

+3

이 https://stackoverflow.com/questions/799981/document-ready-equivalent-without-jquery – Jack

+0

위치 : 재사용 가능한 솔루션을

, 당신은 콜백을 받아들이는 기능이 동작을 캡슐화 할 수 당신은 이벤트를 감지하려고하거나'if' 문에 넣을 코드를 가지고 있습니까? – 4castle

+0

기본적으로'if' 문에 넣습니다. 나는 DOMContentLoaded와 onload를 시도했지만, 내가하고있는 것과는 작동하지 않는다. dom을로드했는지,로드 한 직후에 뭔가를 실행하지 않았는지 확인하고 싶습니다 ... 그게 의미가있는 경우 –

답변

1

질문의 뉘앙스는 onload 이벤트를 캡처하는 데 문제가없는 것 같지만 아직 발생했는지는 알 수 없습니다. .

jQuery가 수행하는 작업을 수행하고 onload 이벤트 내에 true이라는 플래그를 설정 한 다음 if 문에서 해당 플래그를 참조 할 수 있습니다.

var whenLoaded = (function() { 
    var isLoaded = false, 
     callbacks = []; 
    window.onload = function() { 
     isLoaded = true; 
     for (var i = 0; i < callbacks.length; i++) 
      callbacks[i](); 
    }; 
    return function whenLoaded(callback) { 
     if (isLoaded) { 
      callback(); 
     } else { 
      callbacks.push(callback); 
     } 
    }; 
})(); 

... 

whenLoaded(function() { 
    // eat a cookie 
}); 
+0

질문 뒤에있는 전제 : 페이지가 완전히로드되기 전에 실행되는 함수가 있습니다. 그러나이 함수는 이벤트를 전달하는 다른 함수를 호출합니다. 윈도우가 이미로드 된 경우에만 이벤트를 전달하기를 원합니다. 그렇지 않다면 배열에 저장하고 페이지가로드되면 디스패치합니다. –

+0

@HassaanHafeez 나는 IIFE와 함께 다목적으로 사용될 수 있도록 대답을 업데이트했지만 본질적으로 그 명령문을'onload' 블록에 넣기 만하면됩니다. 그렇지 않으면 나중에 호출 할 배열에 넣으십시오. – 4castle

관련 문제