script標(biāo)簽的位置

在我們編寫代碼的時(shí)候,會(huì)在頁(yè)面內(nèi)使用<script>標(biāo)簽來(lái)寫JS,雖然理論上script標(biāo)簽的位置放在哪里可以,但是還是有一點(diǎn)區(qū)別的。

為什么很多人把script標(biāo)簽放在底部

初學(xué)者在學(xué)習(xí)JS的時(shí)候看見很多DEMO里面的script標(biāo)簽寫在底部,但是卻不是很清楚為什么,下面來(lái)解釋一下:
雖然理論上放在哪里都是可以的,但是對(duì)于前端頁(yè)面優(yōu)化來(lái)講,還是放在底部是最佳的,因?yàn)槿绻鸍S執(zhí)行出現(xiàn)錯(cuò)誤了,最起碼頁(yè)面中的元素還能加載出來(lái),因?yàn)镈OM文檔是從上往下的順序執(zhí)行的。

按照傳統(tǒng)的做法,所有script元素都應(yīng)該放在頁(yè)面的head元素中,這種做法的目的就是把所有外部文件(包括css和JavaScript文件)的引用都放在相同的地方,可是,在文檔的head元素中包含所有JavaScript文件,意味著必須等到全部JavaScript代碼都被下載、解析和執(zhí)行完成之后,才能開始呈現(xiàn)頁(yè)面內(nèi)容(瀏覽器在遇到body標(biāo)記時(shí)才開始呈現(xiàn)內(nèi)容)。對(duì)于那些需要很多JavaScript代碼的頁(yè)面來(lái)說(shuō),這無(wú)疑會(huì)導(dǎo)致瀏覽器在呈現(xiàn)頁(yè)面時(shí)出現(xiàn)明顯的延遲,而延遲期間的瀏覽器窗口中將是一片空白。為避免這個(gè)問(wèn)題,現(xiàn)代web應(yīng)用程序一般都把全部JavaScript引用放在<body>元素中頁(yè)面內(nèi)容的后面。

script標(biāo)簽在body標(biāo)簽內(nèi)還是外

許多人認(rèn)為只要放在底部了,無(wú)論是“body標(biāo)簽閉合之前”還是在“body標(biāo)簽閉合之后”都是一樣的,其實(shí)還是有差別的,因?yàn)閺腍TML 2.0起放在“body標(biāo)簽閉合之后”就是不合標(biāo)準(zhǔn)的。之所以但是瀏覽器卻不會(huì)報(bào)錯(cuò),是因?yàn)槿绻凇癰ody標(biāo)簽閉合之后”后再出現(xiàn)script或任何元素的開始標(biāo)簽, 都是parse error,瀏覽器會(huì)忽略之前的</body>,即視作仍舊在body內(nèi)。所以實(shí)際效果和寫在“body標(biāo)簽閉合之前”之前是沒有區(qū)別的。

所以,只要是讓瀏覽器做了多余的事都是不好的,雖然差別細(xì)微,但是還是應(yīng)該按照標(biāo)準(zhǔn)來(lái),放在body標(biāo)簽閉合之前。

?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 問(wèn)答題47 /72 常見瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,095評(píng)論 1 92
  • <a name='html'>HTML</a> Doctype作用?標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別? (1)、<...
    clark124閱讀 3,808評(píng)論 1 19
  • 前端開發(fā)面試題 <a name='preface'>前言</a> 只看問(wèn)題點(diǎn)這里 看全部問(wèn)題和答案點(diǎn)這里 本文由我...
    自you是敏感詞閱讀 899評(píng)論 0 3
  • 琴弦上的相思 美麗動(dòng)人的故事 就像悠悠的麥草 枕著金黃,透著翠綠 演繹著塵封的歲月 飽含著我無(wú)限的情思 渴望重逢在...
    冰玉寒石閱讀 223評(píng)論 0 0
  • 我是一個(gè)不太喜歡一部電影看很多遍的人,唯獨(dú)這部《大話西游》,我看了好幾遍,每一遍的感覺都不一樣,高中的時(shí)候,我只是...
    Q先生的日雜記閱讀 366評(píng)論 0 0

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