2 回答

TA貢獻9條經(jīng)驗 獲得超23個贊
其實原因很簡單,以webkit為例,當初我在把webkit用的libxml換成expat的時候就發(fā)現(xiàn)webkit有個怪癖,當解析到j(luò)s標簽的時候,會把libxml拋出的回調(diào)和數(shù)據(jù)緩存起來,緩存完所有拋出的數(shù)據(jù)后再去執(zhí)行js的東西,執(zhí)行完了再接著拿出緩存,去解析緩存里的東西。這樣對于webkit做多線程解析html標簽優(yōu)化是不太友好的,也會增加額外的緩存開銷,還會解析著的時候趕緊去排版。排版是很耗時的,還會在執(zhí)行js的時候顯示個不完整甚至白版頁面。后來我想明白了,這也是為了讓js能在任何時機取到控制權(quán),甚至在解析標簽到一半的時候,總會有很少的需求會必須在這種時機拿到控制權(quán)吧。

TA貢獻211條經(jīng)驗 獲得超152個贊
js不完全是一定要放在頁面底部的
盡量把可以放在底部的js放在底部,
因為加載js的時候會阻塞DOM渲染,
如果大量的js放在頭部,用戶打開網(wǎng)頁時,就會看到一片白色,要等待js加載完成后,才能繼續(xù)渲染DOM,用戶才能看到頁面內(nèi)容。所以為了優(yōu)化用戶體驗,一般把可以放在底部的js放在底部。
至于那些不能放在底部的js就不要放在底部:舉例,一個網(wǎng)站的頭部的元素標簽他是由js輸出的,那么這個js就不能放在底部,不然的話,你會發(fā)現(xiàn)渲染內(nèi)容完成后,網(wǎng)站頭部會慢半拍出現(xiàn),這個也是不好的用戶體驗
添加回答
舉報