페이지가 로드되면 대략 다음 단계로 나눌 수 있습니다.
HTML 문서 구조 구문 분석 시작
외부 스타일 시트 및 JavaScript 스크립트 로드
JavaScript 스크립트 구문 분석 및 실행
DOM 트리 렌더링 완료
완료되지 않은 외부 리소스(예: 그림) 로드
페이지가 성공적으로 로드되었습니다.
그렇다면 이 전체 프로세스 중에 일반적으로 사용되는 이벤트가 트리거됩니까?
document readystatechange 이벤트readyState 속성은 문서의 로딩 상태를 설명합니다. 전체 로딩 프로세스 동안 document.readyState는 계속 변경되며 각 변경 사항은 Readystatechange 이벤트를 트리거합니다.
readyState 의 상태는
로드 중 / 로드 중문서
가 아직 로드 중입니다. document
仍在加载。
interactive / 互动文档已经完成加载,文档已被解析,但是诸如图像,样式表和框架之类的子资源仍在加载。
complete / 完成T文档和所有子资源已完成加载。状态表示 load
Interactive / 대화형 문서 로드가 완료되고 문서 구문 분석이 완료되었지만 이미지, 스타일시트, 프레임과 같은 하위 리소스는 여전히 로드 중입니다.
완전/완전 T 문서 및 모든 하위 리소스가 로드되었습니다. 상태는 load
이벤트가 곧 트리거될 것임을 나타냅니다.
예를 들어 2단계에서 Interactive에 해당하고 5단계 이후에 완료되면 ReadyStateChange 이벤트가 트리거됩니다.
document DOMContentLoaded 이벤트
window load event
모든 리소스가 로드되면 창의 로드 이벤트가 트리거됩니다.
Instance
<h1>测试页面加载时,事件触发次序</h1> <img src="http://c.hiphotos.baidu.com/image/pic/item/09fa513d269759eea79bc50abbfb43166c22df2c.jpg" alt=""> <h1>测试页面加载时,事件触发次序</h1> <img src="http://h.hiphotos.baidu.com/image/pic/item/279759ee3d6d55fb75ed26e764224f4a21a4ddcc.jpg" alt=""> <h1>测试页面加载时,事件触发次序</h1> <script type="text/javascript"> console.log('resolve body JavaScript'); window.addEventListener('load',function(){ console.log('window load'); }) document.addEventListener('readystatechange',function(){ console.log('document ' + document.readyState); }) document.addEventListener('DOMContentLoaded',function(){ console.log('document DOMContentLoaded'); }) //document 没有load事件?? document.addEventListener('load',function(){ console.log('document load'); }) </script>
크롬의 로그 출력은 다음과 같습니다:
해결 본문 JavaScript --> 문서 대화형 --> 문서 완료 --> 일관된 기대는 없습니다. 따라서 실행되기 전에 문서 구조만 로드해야 하는 스크립트는 DOMContentLoaded를 모니터링할 수 있습니다. 실행하기 전에 모든 콘텐츠를 로드해야 하는 스크립트는 window.onload 또는 document.readyState === 'complete'를 모니터링해야 합니다.
위 내용은 페이지가 로드될 때 트리거되는 이벤트 및 시퀀스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!