Documentï¼DOMContentLoaded äºä»¶
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
å½ HTML ææ¡£å®å
¨è§£æï¼ä¸ææå»¶è¿èæ¬ï¼<script defer src="â¦"> å <script type="module">ï¼ä¸è½½åæ§è¡å®æ¯åï¼ä¼è§¦å DOMContentLoaded äºä»¶ãå®ä¸ä¼çå¾
å¾çãåæ¡æ¶å弿¥èæ¬çå
¶ä»å
容宿å è½½ã
DOMContentLoaded ä¸ä¼çå¾
æ ·å¼è¡¨å è½½ï¼ä½å»¶è¿èæ¬ä¼çå¾
æ ·å¼è¡¨ï¼èä¸ DOMContentLoaded äºä»¶æå¨å»¶è¿èæ¬ä¹åãæ¤å¤ï¼éå»¶è¿æå¼æ¥çèæ¬ï¼å¦ <script>ï¼å°çå¾
已解æçæ ·å¼è¡¨å è½½ã
å¦ä¸ä¸ªäºä»¶ââloadââåªè½ç¨äºæ£æµå®å
¨å è½½ç页é¢ãæä¸ä¸ªå¸¸è§çé误就æ¯å¨ DOMContentLoaded äºä»¶æ´åéæ¶ä½¿ç¨äº load äºä»¶ã
è¿ä¸ªäºä»¶ä¸å¯åæ¶ã
è¯æ³
å¨ç±»ä¼¼äº addEventListener() è¿æ ·çæ¹æ³ä¸ä½¿ç¨äºä»¶åç§°ï¼æè®¾ç½®äºä»¶å¤çå¨å±æ§ã
addEventListener("DOMContentLoaded", (event) => {});
onDOMContentLoaded = (event) => {};
äºä»¶ç±»å
éç¨ Eventã
示ä¾
>åºæ¬ç¨æ³
document.addEventListener("DOMContentLoaded", (event) => {
console.log("DOM å®å
¨å è½½åè§£æ");
});
å»¶è¿ DOMContentLoaded
<script>
document.addEventListener("DOMContentLoaded", (event) => {
console.log("DOM å®å
¨å è½½åè§£æ");
});
for (let i = 0; i < 1_000_000_000; i++);
// è¿æ®µåæ¥èæ¬å°ä¼å»¶è¿ DOM è§£æï¼
// æä»¥ DOMContentLoaded äºä»¶å°ä¼å»¶è¿æ§è¡ã
</script>
æ£æ¥å è½½æ¯å¦å·²ç»å®æ
å¨ä½ çèæ¬ææºä¼è¿è¡åï¼DOMContentLoaded å¯è½å°±å·²ç»è¢«è§¦åãæä»¥ä½ å¨å³å®æ·»å ä¸ä¸ªäºä»¶çå¬å¨åæå¥½å
æ£æ¥ä¸ä¸ã
function doSomething() {
console.info("DOM å è½½äº");
}
if (document.readyState === "loading") {
// æ¤æ¶å è½½å°æªå®æ
document.addEventListener("DOMContentLoaded", doSomething);
} else {
// `DOMContentLoaded` å·²ç»è¢«è§¦å
doSomething();
}
夿³¨ï¼è¿éä¸åå¨ç«äºæ¡ä»¶ââææ¡£ä¸å¯è½å¨ if æ£æ¥å addEventListener() è°ç¨ä¹é´è¢«å è½½ãJavaScript éç¨çæ¯è¿è¡å°å®æè¯ä¹ï¼è¿æå³çå¦æææ¡£å¨äºä»¶å¾ªç¯çæä¸ªç¹å®æ¶é´ç¹æ£å¨å è½½ï¼é£ä¹å¨ä¸ä¸ä¸ªå¾ªç¯ä¹å宿¯ä¸å¯è½è¢«å è½½çï¼èå¨ä¸ä¸ä¸ªå¾ªç¯ä¸ï¼doSomething å¤çç¨åºå·²ç»éå å¹¶å°è¢«è§¦åã
è¿è¡å®ä¾
HTML
<div class="controls">
<button id="reload" type="button">éæ°å è½½</button>
</div>
<div class="event-log">
<label for="eventLog">äºä»¶æ¥å¿ï¼</label>
<textarea
readonly
class="event-log-contents"
rows="8"
cols="30"
id="eventLog"></textarea>
</div>
JavaScript
const log = document.querySelector(".event-log-contents");
const reload = document.querySelector("#reload");
reload.addEventListener("click", () => {
log.textContent = "";
setTimeout(() => {
window.location.reload(true);
}, 200);
});
window.addEventListener("load", (event) => {
log.textContent += "load\n";
});
document.addEventListener("readystatechange", (event) => {
log.textContent += `readystate: ${document.readyState}\n`;
});
document.addEventListener("DOMContentLoaded", (event) => {
log.textContent += "DOMContentLoaded\n";
});
ç»æ
è§è
| è§è |
|---|
| HTML > # event-domcontentloaded > |
æµè§å¨å ¼å®¹æ§
åè§
- ç¸å
³äºä»¶ï¼
loadãreadystatechangeãbeforeunloadãunload