HTML里的哪一部分Javascript 会在页面加载的时候被执行?
最近遇到一個(gè)問(wèn)題:
HTML里的哪一部分Javascript 會(huì)在頁(yè)面加載的時(shí)候被執(zhí)行()
A : 文件頭部
B : 文件尾
C : <head>標(biāo)簽部分
D : <body>標(biāo)簽部分
雖然大家都知道選D,但是關(guān)于答案的解析眾說(shuō)紛紜,由此可見(jiàn)大家對(duì)于瀏覽器的加載解析渲染還是不夠了解。
瀏覽器是從上到下依次加載并解析的。
當(dāng)瀏覽器加載html文件并解析到<head>時(shí),頁(yè)面也就是<body>并沒(méi)有被解析,瀏覽器會(huì)等到<head>中的js執(zhí)行完再加載頁(yè)面。
這是為什么呢?
原因:JS有可能會(huì)修改DOM,最為經(jīng)典的document.write,這意味著,在JS執(zhí)行完成前,后續(xù)所有資源的下載可能是沒(méi)有必要的,這是js阻塞后續(xù)資源下載的根本原因。
示例代碼:
<!DOCTYPE html> <html> <head><title></title><script type="text/javascript">console.log('this is head js ');</script><script type="text/javascript" src='test.js'></script><style type="text/css">body{color: red;}</style> </head> <body> <script type="text/javascript">console.log('this is body js');window.οnlοad=function(){console.log('this is onload js');}; </script> <p >this is body</p> </body> </html>輸出:
?
?
this is head js?
this is test js
this is body js
this is onload js
?
由此可見(jiàn)head和頭部引進(jìn)的script腳本最先加載并執(zhí)行,而onload是最后執(zhí)行的,所以處于<body>和</body>中的元素是在頁(yè)面加載的時(shí)候被執(zhí)行的。
了解這個(gè)有什么用呢?
假如說(shuō)你把DOM操作放在了<head>標(biāo)簽里,你會(huì)發(fā)現(xiàn)報(bào)錯(cuò),這是因?yàn)镈OM樹(shù)還沒(méi)建立,getElementById獲取的是undefined。
所以說(shuō)最好把<script>放在</body>之前。
轉(zhuǎn)載于:https://www.cnblogs.com/aliyunpang/p/9088202.html
總結(jié)
以上是生活随笔為你收集整理的HTML里的哪一部分Javascript 会在页面加载的时候被执行?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Q1全球智能机销量增长3.9% 三星苹果
- 下一篇: 1:tcl-8.5.13-8.el7.x