|
系列文章導(dǎo)航:
JavaScript學(xué)習(xí)筆記一——數(shù)據(jù)類型
JavaScript學(xué)習(xí)筆記二——函數(shù)
JavaScript學(xué)習(xí)筆記三——作用域
JavaScript學(xué)習(xí)筆記四——Eval函數(shù)
JavaScript學(xué)習(xí)筆記五——類和對(duì)象
JavaScript學(xué)習(xí)筆記六:prototype的提出
Javascript學(xué)習(xí)筆記七——原型鏈的原理
Javascript學(xué)習(xí)筆記八——用JSON做原型
Javascript學(xué)習(xí)筆記九——prototype封裝繼承
Javascript學(xué)習(xí)筆記十——網(wǎng)頁運(yùn)行原理
Javascript學(xué)習(xí)筆記十一——包裝DOM對(duì)象
Javascript學(xué)習(xí)筆記十三——關(guān)于響應(yīng)事件
Javascript學(xué)習(xí)筆記十二——Ajax入門
當(dāng)我們打開一個(gè)網(wǎng)頁的時(shí)候,瀏覽器會(huì)首先創(chuàng)建一個(gè)窗口,這個(gè)窗口就是我所知道的window對(duì)象,也就是整個(gè)Javascript運(yùn)行所依附的全局變量。
為了加載網(wǎng)頁文檔,當(dāng)前窗口又需要?jiǎng)?chuàng)建一個(gè)Document對(duì)象,然后把打開的網(wǎng)頁加載到Document下。網(wǎng)頁就是在這個(gè)加載的過程中,一邊加載一邊呈現(xiàn),所以我們當(dāng)網(wǎng)速非常慢的時(shí)候可以看到,網(wǎng)頁從上到下一點(diǎn)點(diǎn)地打開。
當(dāng)我們用<script src=’’>引入其他的JS時(shí),瀏覽器可能會(huì)派遣其他線程去下載,但是瀏覽器也會(huì)等待需要的JS文件下載完成,然后再有主線程按順序加載JS其他的代碼。在Web標(biāo)準(zhǔn)下,限制對(duì)同一個(gè)域名最多只允許使用兩個(gè)線程可以同時(shí)加載內(nèi)容,當(dāng)然可以通過修改注冊(cè)表來強(qiáng)迫Windows模塊突破這一限制。
同時(shí),許多網(wǎng)站會(huì)把js放到不同的子域名下,這樣就可以使瀏覽器開啟更多的線程并行加載這些資源,從而更加充分地利用網(wǎng)絡(luò)帶寬。
當(dāng)整個(gè)頁面都加載結(jié)束后,瀏覽器開始觸發(fā)window對(duì)象或者body對(duì)象的onload事件,其實(shí)window對(duì)象和body對(duì)象的load事件是想通的,這也就意味著兩個(gè)事件只能有一個(gè)起作用。當(dāng)然,在常規(guī)意義上,也沒有同時(shí)設(shè)置兩者的需求。
到此結(jié)束,然后JS引擎就暫停工作,等待著下一次的觸發(fā)。因此我們可以說:“JS總是被動(dòng)觸發(fā)的”。
it知識(shí)庫:Javascript學(xué)習(xí)筆記十&mdash;&mdash;網(wǎng)頁運(yùn)行原理,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。