HTML執(zhí)行順序

html的基本結(jié)構(gòu)

<html>
    <head>
        <!-- 頭部中包含的標(biāo)記是頁(yè)面的標(biāo)題、序言、說(shuō)明等內(nèi)容,它本身不作為內(nèi)容來(lái)顯示,但影響網(wǎng)頁(yè)顯示的效果 -->
    </head>
    <body>
        <!-- 顯示實(shí)際內(nèi)容 -->
    </body>
</html>

①html:貫穿整個(gè)頁(yè)面

②css:三種聲明方式

  • 外聯(lián)樣式表:在head便簽中 用link標(biāo)簽的href屬性來(lái)引用后綴名為.css的css樣式文件
  • 內(nèi)聯(lián)樣式表:在head標(biāo)簽下的style標(biāo)簽中,選擇器 + 樣式聲明
  • 內(nèi)部樣式表:在標(biāo)簽的style屬性中添加css樣式聲明
    ③JavaScript:在<script>標(biāo)簽中,可以在head標(biāo)簽中,也可以在body標(biāo)簽中(區(qū)別一會(huì)再說(shuō))
目前為止,在整個(gè)html頁(yè)面中,可以寫(xiě)html代碼、css樣式、JS腳本語(yǔ)言

寫(xiě)的位置:

  • html貫穿整個(gè)頁(yè)面,
  • css可以定義在head頭標(biāo)簽中,也可以在定義在html標(biāo)簽的屬性中
  • JavaScript定義在<script>標(biāo)簽中,<script>標(biāo)簽既能在head標(biāo)簽中定義也能在body標(biāo)簽中定義

加載順序:

<html>
    <head>
        <!-- 引用外部JS文件 -->
        <script src="..........."></script>
        <!--引用外部css樣式 -->
        <link href="............."/>
        <style>
               ..............
        </style>
        <script>
               ..............
        </script>
    </head>
    <body>
        <script>
               ..............
        </script>
    </body>
</html>

從上到下運(yùn)行,先解析head標(biāo)簽中的代碼,

(1)head標(biāo)簽中會(huì)包含一些引用外部文件的代碼,從開(kāi)始運(yùn)行就會(huì)下載這些被引用的外部文件

當(dāng)遇到script標(biāo)簽的時(shí)候,瀏覽器暫停解析(不是暫停下載),將控制權(quán)交給JavaScript引擎(解釋器)
如果<script>標(biāo)簽引用了外部腳本,就下載該腳本,否則就直接執(zhí)行,執(zhí)行完畢后將控制權(quán)交給瀏覽器渲染引擎

(2)當(dāng)head中代碼解析完畢,會(huì)開(kāi)始解析body中的代碼

如果此時(shí)head中引用的外部文件沒(méi)有下載完,將會(huì)繼續(xù)下載
瀏覽器解析body代碼中的元素,會(huì)按照head中聲明一部分樣式去解析
如果此時(shí)遇到body標(biāo)簽中的<script>,同樣會(huì)將控制權(quán)交給JavaScript引擎來(lái)解析JavaScript
解析完畢后將控制權(quán)交還給瀏覽器渲染引擎。
當(dāng)body中的代碼全部執(zhí)行完畢、并且整個(gè)頁(yè)面的css樣式加載完畢后,css會(huì)重新渲染整個(gè)頁(yè)面的html元素。

(3)按照之前的描述,<script>寫(xiě)到body標(biāo)簽內(nèi)靠后比較好,

因?yàn)镴avaScript 會(huì)操作html元素,如果在body加載完之前寫(xiě)JavaScript,會(huì)造成JavaScript找不到頁(yè)面元素
但是我們經(jīng)常將<script>寫(xiě)到head中,body中不會(huì)有大量的js代碼,body中的html代碼結(jié)構(gòu)會(huì)比較清晰
  • window.onload: 等待頁(yè)面中的所有內(nèi)容加載完畢之后才會(huì)執(zhí)行
  • $(document).ready(): 頁(yè)面中所有DOM結(jié)構(gòu)繪制完畢之后就能夠執(zhí)行
可以這樣理解:window.onload$(document).ready()/$(function(){});相當(dāng)于 寫(xiě)在body 內(nèi) 最靠后的<script>代碼段

Html、js的加載順序:

<html>
<head>
<script>
    alert("script-head");
</script>
</head>
<body onload="alert('html-tag');">
<script>
    alert("script-body");
</script>
</body>
<script>
    alert("script-body-outer");
</script>
</html>
<script>
    alert("script-html-outer");
</script>
輸出結(jié)果:
script-head、script-body、script-body-outer、script-html-outer、html-tag

從上面輸出結(jié)果可以明顯看到:

js在頁(yè)面裝載時(shí)執(zhí)行的順序就是其引入標(biāo)記<script />的出現(xiàn)順序,<script />標(biāo)記里面的或者通過(guò)src引入的外部JS,都是按照其語(yǔ)句出現(xiàn)的順序執(zhí)行,而且執(zhí)行過(guò)程是文檔裝載的一部分。只有全部js腳本按順序加載完畢后才開(kāi)始html標(biāo)簽內(nèi)容的加載過(guò)程。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,801評(píng)論 1 45
  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,116評(píng)論 1 92
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,799評(píng)論 0 3
  • 1. 介紹 瀏覽器可能是最廣泛使用的軟件。本書(shū)將介紹瀏覽器的工作原理。我們將看到,當(dāng)你在地址欄中輸入google....
    康斌閱讀 2,161評(píng)論 7 18
  • 一:在制作一個(gè)Web應(yīng)用或Web站點(diǎn)的過(guò)程中,你是如何考慮他的UI、安全性、高性能、SEO、可維護(hù)性以及技術(shù)因素的...
    Arno_z閱讀 1,360評(píng)論 0 1

友情鏈接更多精彩內(nèi)容