2011-07-05 7 views
3

domready 이벤트를 추적하기위한 jQuery 소스 코드를보고 있는데 완전히 이해하지 못하는 것이 하나 있습니다. 스크립트가 동적으로 포함되고 비동기 적으로로드되는 경우 어떻게해야합니까? 그렇게하면 스크립트가로드 될 때 문서가 이미로드 될 수 있습니다. jQuery가 이것을 확인하는 유일한 장소는 document.readyState입니다.Jquery는 어떻게 작동합니까?

내가 틀렸다고 정정하되,이 속성이 단지 최근에 Firefox에 도입 된 적이 없습니까? 그렇다면 DomContentLoaded 이벤트가 이미 발생했을 수 있습니다 (윈도우의 onLoad도 가능). 그런 상황에서 domready에서 실제로 코드를 호출 할 방법이 없습니다.

답변

3

현재 버전의 jQuery에서는 "지연된"메커니즘으로 처리됩니다. 페이지의 준비 상태는 Deferred 객체에 캡슐화되며 함수는 단순히 "done()"대기열에 추가됩니다. Deferred API는 단순히 페이지가 준비되었는지 여부를 기억하므로 페이지가 준비된 후에 "준비"핸들러로 함수를 전달하면 함수가 즉시 호출됩니다.

실제로 "준비 상태"가 언제 발생하는지 추적하는 코드는 꽤 고민입니다.

관련 문제