많은 사람들이 이미 Javascript를 능숙하게 사용하고 있지만 defer를 보면 그것이 무엇에 사용되는지 알지 못할 수도 있습니다. 많은 사람들도 이러한 문제에 직면했으며, 다른 js를 직접 실행하고 DOM 객체를 조작하고 항상 Object를 보고해야 합니다. 찾을 수 없음 오류 모두가 알고 있듯이 페이지가 아직 로드되지 않았고 js 작업 개체가 아직 다운로드 중이기 때문입니다. 그러나 많은 사람들은 defer 태그를 추가하면 이 문제를 쉽게 해결할 수 있다는 사실을 모릅니다.
<script src="../CGI-bin/delscript.js" 연기></script>
지연 기능은 문서가 로드된 후 스크립트를 실행하여 개체를 찾지 못하는 문제를 방지하는 것입니다. 약간의 문제입니다.
다음과 같이 코드 코드를 복사합니다.
<button id="myButton" onclick="alert('ok')">테스트</button>
<스크립트>
myButton.click();
</script>
<스크립트>
myButton.click();
</script>
<button id="myButton" onclick="alert('ok')">테스트</button>
<스크립트 연기>
함수 document.body.onload() {
경고(document.body.offsetHeight);
}
</script>
defer를 추가한다는 것은 페이지가 완전히 로드된 후에 실행된다는 의미입니다. 이는 window.onload와 동일하지만 애플리케이션에서는 window.onload보다 더 유연합니다!
Defer는 스크립팅의 힘에 있어서 "숨겨진 영웅"입니다. 이는 스크립트 세그먼트에 즉시 실행될 필요가 없는 코드가 포함되어 있음을 브라우저에 알리고, SRC 속성과 함께 사용하면 이러한 스크립트가 백그라운드에서 다운로드되어 전경의 콘텐츠가 표시될 수도 있습니다. 정상적으로 사용자에게
--그러나 문서가 로드된 후에 스크립트를 실행합니다.
다음 두 가지 사항에 유의하세요.
1. document.write가 직접 출력 효과를 생성하므로 defer-type 스크립트 세그먼트에서 document.write 명령을 호출하지 마십시오.
2. 또한, defer 스크립트 세그먼트에는 즉시 실행 스크립트에서 사용할 전역 변수나 함수를 포함하지 마십시오.
성능을 최적화하는 일반적인 방법은 스크립트를 즉시 실행할 필요가 없을 때 <SCRIPT> 태그에 "defer" 속성을 설정하는 것입니다. (직접 스크립트는 함수 블록에 포함되어 있지 않으므로 로딩 과정 중에 실행됩니다.) "defer" 속성을 설정하면 IE는 스크립트가 로드되고 실행될 때까지 기다릴 필요가 없습니다. 이렇게 하면 페이지가 더 빨리 로드됩니다. 일반적으로 이는 즉시 실행 스크립트가 함수 블록에 가장 잘 배치되고 문서 또는 본문 개체의 onload 핸들러에서 함수를 처리한다는 의미이기도 합니다. 이 속성은 버튼 클릭, 특정 영역으로 마우스 이동 등 사용자 작업에 따라 실행해야 하는 일부 스크립트가 있는 경우에 유용합니다. 그러나 페이지가 로드되는 동안이나 이후에 실행해야 하는 일부 스크립트가 있는 경우 defer 속성을 사용하는 이점은 크지 않습니다.
스크립트의 defer 속성은 기본적으로 false입니다. DHTML 프로그래밍 가이드의 설명에 따르면 Defer 속성은 다음과 같이 작성됩니다.
디자인 타임에 속성을 사용하면 브라우저가 스크립트를 구문 분석하고 실행할 필요가 없고 대신 페이지를 계속 다운로드하고 구문 분석할 수 있으므로 페이지의 다운로드 성능을 향상시킬 수 있습니다.
즉, 스크립트 작성 시 defer 속성을 추가하면 브라우저는 스크립트 다운로드 시 즉시 이를 처리할 필요 없이 계속해서 페이지를 다운로드하고 구문 분석하므로 다운로드 성능이 향상됩니다.
그러한 상황이 많이 있습니다. 예를 들어, JavaScript 변수를 많이 정의하거나 참조 파일(.inc)에 처리해야 하는 스크립트를 많이 작성하는 경우 이러한 스크립트에 defer 속성을 추가하면 성능 향상에 확실히 도움이 됩니다. .
예는 다음과 같습니다:
다음과 같이 코드 코드를 복사합니다.
<스크립트 언어="javascript" 연기>
var 객체 = 새로운 객체();
....
</script>
defer 속성의 기본값은 false이므로 여기서는
<스크립트 언어="javascript" 연기>
defer 속성을 명시적으로 선언하는 것은 다음과 같습니다.
<스크립트 언어="javascript" defer=true>
defer 속성을 선언한 후에는 다른 변수가 defer 스크립트 블록의 변수를 참조하는지 여부를 확인해야 합니다. 그렇지 않으면 스크립트 오류가 발생합니다.