웹 프론트엔드 JS 튜토리얼 DOM이 로드되는 시기를 결정하는 JavaScript 기술_javascript 기술

DOM이 로드되는 시기를 결정하는 JavaScript 기술_javascript 기술

May 16, 2016 pm 05:48 PM
dom 판단

HTML DOM 문서 작업의 한 가지 어려움은 DOM이 완전히 로드되기 전에 JavaScript가 실행될 수 있다는 것입니다. 이는 코드에 많은 잠재적인 문제를 일으킬 수 있습니다. 브라우저의 렌더링 및 작업 순서는 대략 다음과 같습니다.

HTML 구문 분석 완료
외부 스크립트 및 스타일 시트 로드
문서 내에서 스크립트 구문 분석 및 실행
HTML DOM이 완전히 구성되었습니다.
이미지 및 외부 콘텐츠 로드
웹 페이지 로드 완료

웹 페이지 헤드에 있는 스크립트와 외부 파일에서 로드된 스크립트는 HTML이 실제로 구성되기 전에 실행됩니다. 앞서 언급했듯이 이 두 곳에서 실행되는 스크립트는 아직 존재하지 않는 DOM에 접근할 수 없기 때문에 이는 중요한 문제입니다. 다행히도 몇 가지 해결책이 있습니다.
현재 가장 일반적으로 사용되는 수준은 DOM 작업을 수행하기 전에 전체 페이지가 로드될 때까지 완전히 기다리는 것입니다. 이 기술은 페이지가 로드된 후 트리거될 수 있는 함수를 바인딩하기 위해 창 개체의 로드 이벤트만 사용하면 됩니다.

코드 복사 코드는 다음과 같습니다.

addEvent(window, "load", function (){
// 뭔가를 하세요
})

가장 간단한 작업이 가장 느립니다. 로딩 프로세스의 순차적 목록에서 페이지 로딩 여부가 마지막 단계에 의해 완전히 제어된다는 것을 알 수 있습니다. 즉, 페이지에 사진, 동영상 등이 많으면 JavaScript가 실행되기 전에 사용자가 잠시 로그인해야 할 수도 있습니다.
또 다른 진행을 사용하여 DOM 로딩 상태를 수신할 수 있습니다. 이는 구현 측면에서 아마도 가장 복잡하지만 가장 효율적이기도 합니다.
브라우저 로딩을 차단하지 않고 HTML DOM 문서가 실행에 필요한 속성으로 로딩되었는지를 최대한 빠르게 확인하는 기술입니다. 다음은 HTML DOM이 사용 가능한지 확인하기 위한 몇 가지 핵심 사항입니다.

문서: DOM 문서가 로드되었는지 알아야 합니다. 충분히 빠르게 확인하면 운이 좋으면 정의되지 않음이 표시될 것입니다.
document.getElementsByTagName 및 document.getElementById: document.getElementsByTagName 및 document.getElementById 함수를 자주 사용하여 문서를 확인합니다. 이러한 함수가 있으면 DOM이 로드되었음을 나타냅니다.
document.body: 추가 보너스로 요소가 완전히 로드되었는지 확인합니다. 이론적으로 이전 점검은 이미 판단을 내릴 수 있어야 하지만 어떤 경우에는 아직 충분하지 않다는 것을 발견했습니다.
이러한 검사를 사용하면 DOM을 사용할 수 있는지 여부를 판단하기에 충분합니다(여기서 "충분하다"는 것은 특정 밀리초의 시간 차이가 있을 수 있음을 의미합니다). 이 방법에는 결함이 거의 없습니다. 앞서 언급한 검사만 사용하면 스크립트가 최신 브라우저에서 상대적으로 잘 실행됩니다. 그러나 최근(2008년?) Firefox에서는 스크립트가 DOM 사용 가능 여부를 확인하기 전에 창 로드 이벤트가 실제로 실행될 수 있도록 캐싱 개선 사항을 구현했습니다. 이를 활용하기 위해 더 빠른 실행 속도를 달성하기 위해 창 로딩 이벤트에 검사도 첨부했습니다.

마지막으로 domReady 함수는 DOM을 사용할 수 있을 때 실행해야 하는 모든 함수에 대한 참조를 수집합니다. DOM이 사용 가능한 것으로 간주되면 이러한 참조가 순서대로 하나씩 호출되고 실행됩니다.
코드 복사 코드는 다음과 같습니다.

// DOM 여부를 모니터링하는 함수 is available
function domReady(f) {
// DOM이 로드되면 Mashan은
if(domReady.done) return f(); 함수를 실행합니다. 함수를 추가했습니다
if(domReady.timer) {
// 실행할 함수 목록에 있다고 가정합니다
domReady.ready.push(f)
} else {
// 로딩 후 페이지 바인딩 먼저 완료되는 경우를 위한 이벤트입니다.
addEvent(window, "load", isDOMReady);
// 실행 함수 배열 초기화
domReady.ready = [f]
// DOM을 최대한 빨리 사용할 수 있는지 확인 가능
domReady.timer = setInterval(isDOMReady, 13);
}
}

// DOM이 작동하는지 확인
function isDOMReady() {
// DOM이 가능하다고 판단되면
if(domReady.done) return false

// 여러 함수와 요소가 가능한지 확인하세요
if(document && document. getElementsByTagName && document.getElementById && document.body) {
// 사용 가능한 경우 확인을 중지합니다
clearInterval(domReady.timer)
domReady.timer = null

// 실행 모든 대기 함수
for(var i = 0; i < domReady.ready.length; i ) {
domReady.ready[i]()
// 여기서 완료했음을 기록하세요
domReady.ready = null;
domReady.done = true;
}
}
}


이제 HTML 문서에서 어떻게 수행되는지 살펴보겠습니다. domReady 함수가 domready.js라는 외부 파일에 작성되었다고 가정합니다.


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Illustrator에서 플러그인 로드 중 오류 발생 [수정됨] Illustrator에서 플러그인 로드 중 오류 발생 [수정됨] Feb 19, 2024 pm 12:00 PM

Adobe Illustrator를 시작할 때 플러그인 로딩 오류에 대한 메시지가 팝업됩니까? 일부 Illustrator 사용자는 응용 프로그램을 열 때 이 오류가 발생했습니다. 메시지 뒤에는 문제가 있는 플러그인 목록이 표시됩니다. 이 오류 메시지는 설치된 플러그인에 문제가 있음을 나타내지만 손상된 Visual C++ DLL 파일이나 손상된 기본 설정 파일과 같은 다른 이유로 인해 발생할 수도 있습니다. 이 오류가 발생하면 이 문서에서 문제 해결 방법을 안내하므로 아래 내용을 계속 읽어보세요. Illustrator에서 플러그인 로드 오류 Adobe Illustrator를 시작하려고 할 때 "플러그인 로드 오류" 오류 메시지가 표시되면 다음을 사용할 수 있습니다. 관리자로

Stremio 자막이 작동하지 않습니다. 자막을 로드하는 중 오류가 발생했습니다. Stremio 자막이 작동하지 않습니다. 자막을 로드하는 중 오류가 발생했습니다. Feb 24, 2024 am 09:50 AM

Windows PC의 Stremio에서 자막이 작동하지 않습니까? 일부 Stremio 사용자는 동영상에 자막이 표시되지 않는다고 보고했습니다. 많은 사용자들이 "자막을 로드하는 중 오류가 발생했습니다."라는 오류 메시지가 나타났다고 보고했습니다. 이 오류와 함께 나타나는 전체 오류 메시지는 다음과 같습니다. 자막을 로드하는 동안 오류가 발생했습니다. 자막을 로드하지 못했습니다. 이는 사용 중인 플러그인이나 네트워크에 문제가 있을 수 있습니다. 오류 메시지에서 알 수 있듯이 인터넷 연결로 인해 오류가 발생할 수 있습니다. 따라서 네트워크 연결을 확인하고 인터넷이 제대로 작동하는지 확인하십시오. 이 외에도 충돌하는 자막 추가 기능, 특정 비디오 콘텐츠에 대해 지원되지 않는 자막, 오래된 Stremio 앱 등 이 오류의 다른 이유가 있을 수 있습니다. 좋다

PHP 이메일 감지: 이메일이 성공적으로 전송되었는지 확인합니다. PHP 이메일 감지: 이메일이 성공적으로 전송되었는지 확인합니다. Sep 19, 2023 am 09:16 AM

PHP 이메일 감지: 이메일이 성공적으로 전송되었는지 확인합니다. 웹 애플리케이션을 개발할 때 사용자와 통신하기 위해 이메일을 보내야 하는 경우가 종종 있습니다. 등록 확인, 비밀번호 재설정, 알림 전송 등 이메일 기능은 필수적인 부분입니다. 하지만 이메일이 실제로 성공적으로 전송되었는지 확인할 수 없는 경우가 있으므로 이메일 감지를 수행하여 이메일이 성공적으로 전송되었는지 확인해야 합니다. 이 기사에서는 PHP를 사용하여 이 기능을 구현하는 방법을 소개합니다. 1. 이메일을 보내려면 SMTP 서버를 사용하세요. 먼저 SM을 사용해야 합니다.

Jul 24, 2023 pm 06:57 PM

Java의 File.isDirectory() 함수를 사용하여 파일이 존재하는지, 디렉토리 유형인지 확인합니다. Java 프로그래밍에서는 파일이 존재하는지, 디렉토리 유형인지 확인해야 하는 상황에 자주 직면합니다. Java는 파일과 디렉터리를 작동하는 File 클래스를 제공합니다. isDirectory() 함수는 파일이 디렉터리 유형인지 확인하는 데 도움이 됩니다. File.isDirectory() 함수는 File 클래스의 메서드입니다. 해당 함수는 현재 File을 결정하는 것입니다.

PHP는 무한 스크롤 로딩을 구현합니다. PHP는 무한 스크롤 로딩을 구현합니다. Jun 22, 2023 am 08:30 AM

인터넷이 발전하면서 점점 더 많은 웹페이지에서 스크롤 로딩을 지원해야 하는데, 무한 스크롤 로딩이 그 중 하나입니다. 이를 통해 페이지에 새로운 콘텐츠가 지속적으로 로드되어 사용자가 웹을 보다 원활하게 탐색할 수 있습니다. 이번 글에서는 PHP를 이용하여 무한 스크롤 로딩을 구현하는 방법을 소개하겠습니다. 1. 무한 스크롤 로딩이란 무엇인가요? 무한 스크롤 로딩은 스크롤 막대를 기반으로 웹 콘텐츠를 로딩하는 방법입니다. 그 원리는 사용자가 페이지 하단으로 스크롤할 때 AJAX를 통해 배경 데이터를 비동기적으로 검색하여 지속적으로 새 콘텐츠를 로드하는 것입니다. 이런 종류의 로딩 방법

CSS를 로드할 수 없는 문제를 해결하는 방법 CSS를 로드할 수 없는 문제를 해결하는 방법 Oct 20, 2023 am 11:29 AM

CSS를 로드할 수 없는 문제에 대한 해결 방법에는 파일 경로 확인, 파일 내용 확인, 브라우저 캐시 지우기, 서버 설정 확인, 개발자 도구 사용 및 네트워크 연결 확인이 포함됩니다. 자세한 소개: 1. 파일 경로를 확인하십시오. 먼저 CSS 파일의 경로가 올바른지 확인하십시오. CSS 파일이 웹사이트의 다른 부분이나 하위 디렉토리에 있는 경우 올바른 경로를 제공해야 합니다. CSS 파일은 루트 디렉토리에 있으며 경로는 직접적이어야 합니다. 2. 파일 내용을 확인하십시오. 경로가 올바른 경우 CSS 파일 자체에 문제가 있을 수 있습니다.

하이퍼링크를 삽입하면 Outlook이 정지됩니다. 하이퍼링크를 삽입하면 Outlook이 정지됩니다. Feb 19, 2024 pm 03:00 PM

Outlook에 하이퍼링크를 삽입할 때 정지 문제가 발생하는 경우 불안정한 네트워크 연결, 이전 Outlook 버전, 바이러스 백신 소프트웨어의 간섭 또는 추가 기능 충돌이 원인일 수 있습니다. 이러한 요인으로 인해 Outlook이 하이퍼링크 작업을 제대로 처리하지 못할 수 있습니다. 하이퍼링크를 삽입할 때 Outlook이 멈추는 문제 해결 다음 수정 사항을 사용하여 하이퍼링크를 삽입할 때 Outlook이 멈추는 문제를 해결하세요. 설치된 추가 기능 확인 Outlook 업데이트 일시적으로 바이러스 백신 소프트웨어를 비활성화한 다음 새 사용자 프로필을 만들어 보세요. Office 앱 수정 프로그램 Office 제거 및 재설치 시작하겠습니다. 1] 설치된 추가 기능을 확인하세요. Outlook에 설치된 추가 기능이 문제의 원인일 수 있습니다.

java의 Character.isDigit() 함수를 사용하여 문자가 숫자인지 확인합니다. java의 Character.isDigit() 함수를 사용하여 문자가 숫자인지 확인합니다. Jul 27, 2023 am 09:32 AM

Java의 Character.isDigit() 함수를 사용하여 문자가 숫자인지 확인합니다. 문자는 컴퓨터 내부에서 ASCII 코드 형식으로 표시됩니다. 그 중 숫자 0~9에 해당하는 아스키코드 값은 각각 48~57이다. 문자가 숫자인지 확인하려면 Java의 Character 클래스에서 제공하는 isDigit() 메서드를 사용할 수 있습니다. isDigit() 메소드는 Character 클래스에 속합니다.

See all articles