在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 關(guān)于window.onload和$(document).ready

關(guān)于window.onload和$(document).ready

js代碼

window.onload=function(){
   console.log(2)
}
console.log(1)

html 代碼什么都沒有,只分別:

  1. 在head標(biāo)簽中引入上述js
  2. body標(biāo)簽最后引入
  3. html標(biāo)簽外引入

然后對(duì)比三種情況的控制臺(tái)。

  1. 第一種情況:先1后2,不難理解 因?yàn)樵趆ead中DOM還沒加載完 所以先1 等文檔加載完畢輸出2
  2. 第二種情況:我的理解是 在最后引入js dom已經(jīng)加載完畢應(yīng)該先2后1 很不幸 本人測(cè)試結(jié)果還是先1后2
  3. 第三種情況:將script寫在整個(gè)html跟標(biāo)簽之外,很不幸 還是先1后2

測(cè)試了jquey的read函數(shù) 結(jié)果相同(手機(jī)打字沒有圖不好意思了)

回答
編輯回答
嘟尛嘴
  1. jQ的.ready()對(duì)應(yīng)的是DOMContentLoaded事件,而不是load;
  2. .ready()的推薦寫法是$(function(){});或者jQuery(function($) {});
  3. script寫在整個(gè)html根標(biāo)簽之外?這是非標(biāo)準(zhǔn)寫法。
2018年5月1日 03:50
編輯回答
汐顏

這個(gè)問題的本質(zhì)不是 DOMContentLoadedload 問題。

題主可以打開 devtools,選擇網(wǎng)絡(luò)

刷新頁面,可以看到:

兩者是同步發(fā)生的。

言外之意是,js 阻塞了頁面的載入和渲染。

那么我們?cè)倏匆幌滦阅苊姘澹?/p>

我以第二種情況舉例。

點(diǎn)擊這個(gè)重新載入,或者使用快捷鍵:

我們會(huì)得到一個(gè)火焰圖,由于代碼很簡單,所以我們很容易定位。

由于之前頁面載入的時(shí)間是 2.6s,所以這次我們等待 3s 鐘:

可以很清楚的看到,console.log 先執(zhí)行的。

2017年2月22日 12:46
編輯回答
貓館

首先,你聲明的是 js 的回調(diào)函數(shù),js 引擎在解析時(shí)碰到回調(diào)函數(shù)會(huì)將它拋到一個(gè)事件隊(duì)列中,在其它代碼執(zhí)行完且觸發(fā)條件出現(xiàn)時(shí)(此處觸發(fā)條件為 window.onload)才會(huì)執(zhí)行。
其次,window.onload 發(fā)生在所有文件加載完之后。

2018年9月20日 16:41