JavaScript是一種專為與網頁交互而設計的腳本語言,由三個部分組成:(1).ECMAScript :提供核心語言功能。(2).文檔對象模型(DOM):提供訪問和操作網頁內容的方法與接口(3).瀏覽器對象模型(BOM):提供與瀏覽器的交互的方法與接口
(2)HTML 代碼執行情況
(現代瀏覽器原理)
作者:錢多多1. html下載與執行是同步的嗎?
結論:分情況。
html執行這個描述不準確,所謂的執行包括parseHTML、layout、paint幾個階段。download、parseHTML/parseCSS/executeJS、layout、paint都在不同進程中。
parseHTML/parseCSS并行,共同完成后layout生成渲染樹,進而paint渲染。執行JS會重新回到layout階段。
A.如果網速足夠快,內容很快傳送完畢,那parse+layout+paint會靠后執行。
B.如果弱網環境下,針對網速很慢的情況現代瀏覽器是有優化的,會嘗試提前渲染已收到的內容,也就造成了pc上會看到頁面一塊一塊展現的狀況。
C.chunk原理類似,每個chunk斷點都有可能觸發解析渲染。
D.有些瀏覽器還會做首屏優化,下載過程中不斷嘗試parse+layout,如果layout計算出內容超過首屏就paint這些內容,讓用戶優先看到首屏內容。
大部分進程因為是并行的,會相對復雜,分情況討論意義不大,不如從原理上理解。
2. css文件的下載和渲染是同步的嗎? 還是先下載完, 再渲染?
不確定下載過程中是否同步做詞法分析parseCss,但是可能性很大,畢竟是種無損失的優化方案,
但是最終肯定需要下載完再layout生成渲染樹,進而渲染。
3. css文件的下載&執行 和 html文件的下載&執行同步嗎?
并行的。但是需要注意一些限制,比如一個域名下最大并發6個請求,再多就得串行。
4. 圖形的加載 和 html文件的下載/執行同步嗎, 音視頻呢, 別的資源呢?
同上。
5. js文件的下載&執行和html文件的下載&執行同步還是異步?如果帶有async和defer呢?
下載,但不executeJS
6. 有沒有可能出現html文件/圖片/css文件/js文件同時下載的情況?
常態。
7. 有沒有可能出現html/css文件/js文件同時執行的情況?
你讀了上面文章就能理解了:html parse和css parse是并行的,兩者完成后才會layout、paint,新的css掛載會延遲layout、paint。js parse會阻塞html parse ,所以后面的layout、paint一定不會同時執行。
(3).在html 中使用JavaScript
3.1<script>元素
<script>元素的六個屬性:
1. async:異步加載屬性,可選。只對外部腳本有效,表示立即下載腳本,但不妨礙頁面
的其他操作。
2. charset:字符編碼屬性,可選。默認是utf-8編碼,主要表示通過src屬性指定的
代碼的字符集,大多瀏覽器會忽略它的值,所以不必使用。
3.defer:腳本延遲屬性,可選。用來延遲腳本的執行時間,直到HTML文檔已經全
部被解析和顯示之后再執行,只對外部腳本文件有效。
4.language:腳本類型屬性,不是標準組成的一部分,已廢棄。大多數瀏覽器
會忽略這個屬性,已沒必要使用。
5.src:鏈接外部文件屬性,可選。表示包含要執行代碼的外部文件。注意,
一旦設置src屬性,script元素中編寫的JavaScript代碼就可能無效。
6. type:腳本類型屬性,必須。默認值為text/javascript可以看成language
的替代屬性,表示編寫代碼所使用的內容類型(也叫mime類型)。
注意事項:代碼中的任何地方都不要出現</script>
3.2 標簽位置<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <noscript> <p>本瀏覽器不支持script</p> </noscript> </body> </html> 觸發條件:1.瀏覽器不支持腳本 2.瀏覽器支持腳本,但是腳本被禁用
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com