js基礎(chǔ)_2(頁(yè)面加載和延遲腳本)

js標(biāo)簽的位置:
           通常都是把關(guān)于標(biāo)簽<script>放在<header>元素中
  目的:把所有外部文件css文件和javascript文件件的引用都放在相同的地方,但是 <header>中包含js文件,只有js代碼全部
       下載完成后才會(huì)載入頁(yè)面,但這無(wú)疑是延遲呈現(xiàn)頁(yè)面,在延遲期間頁(yè)面空白
  解決:把js代碼放在<body>元素中(頁(yè)面內(nèi)容的后面),這樣就把加載空白頁(yè)面的時(shí)間縮短了.

defer屬性:立即下載,但會(huì)延遲進(jìn)行. 只對(duì)外部腳本文件有效
asyns屬性:與defer屬性相似,都可以改變處理腳本行為,但標(biāo)記asyns的腳步并不能保證它們的先后執(zhí)行順序.
          目的:不讓頁(yè)面等待兩個(gè)腳本下載和執(zhí)行, 會(huì)在load事件前執(zhí)行,但會(huì)在DomcontentLoaded事
                       件觸發(fā)之前或之后執(zhí)行, 支持的瀏覽器(Firefox 3.6,safar和 Chrome)
src屬性:表示包含要執(zhí)行代碼的外部文件.
(無(wú)論如何包含代碼,只要不存在defer和asyns屬性,瀏覽器都會(huì)按照<script>元素在頁(yè)面中的出現(xiàn)的先后順序?qū)λ麄円淮芜M(jìn)行
解析.簡(jiǎn)單來(lái)說(shuō)就是第一個(gè)<script>元素包含的代碼解析完成后,第二個(gè)<script>包含的代碼才會(huì)被解析.然后才是第三個(gè),第四
個(gè)……)
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>延遲腳本</title>
        <script type="text/javascript" defer="defer" src="js/bootstrap.min.js"> </script>
    </head>
    <body>
        <!--內(nèi)容-->
    </body>
</html>
 在這個(gè)例子里為<script>標(biāo)簽定義了defer屬性,這樣腳本會(huì)被延遲到整個(gè)頁(yè)面都解析完畢后在運(yùn)行,因此在<script>設(shè)置了
deferi屬性,相當(dāng)于告訴瀏覽器立即下載,但延遲進(jìn)行,雖然我們把<script>放在<header>中但其中包含的延遲腳本講遇到瀏覽
器</html>標(biāo)簽再進(jìn)行. HTML5規(guī)范要求腳本按照他們出現(xiàn)的先后順序再進(jìn)行,因此第一個(gè)延遲腳本會(huì)先于第二個(gè)延遲腳本進(jìn)行,
而這兩個(gè)腳本會(huì)先于DOMcontentLoaded事件觸發(fā)前執(zhí)行,但在現(xiàn)實(shí)當(dāng)中,延遲腳本不應(yīng)定會(huì)按照順序執(zhí)行,也不定在DOMconte
ntLoaded事件觸發(fā)前執(zhí)行,因此最好包含一個(gè)延遲腳本.
最后編輯于
?著作權(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)容

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