摘要:高級程序設(shè)計摘錄可選。表示通過屬性指定的代碼的字符集。這個屬性并不是必需的,如果沒有指定這個屬性,則其默認(rèn)值仍為。規(guī)范要求腳本按照它們出現(xiàn)的先后順序執(zhí)行,因此第一個延遲腳本會先于第二個延遲腳本執(zhí)行,而這兩個腳本會先于事件執(zhí)行。
《javascript高級程序設(shè)計》摘錄:
MIME類型async:可選。表示應(yīng)該立即下載腳本,但不應(yīng)妨礙頁面中的其他操作,比如下載其他資源或 等待加載其他腳本。只對外部腳本文件有效。
charset:可選。表示通過 src 屬性指定的代碼的字符集。由于大多數(shù)瀏覽器會忽略它的值, 因此這個屬性很少有人用。
defer:可選。表示腳本可以延遲到文檔完全被解析和顯示之后再執(zhí)行。只對外部腳本文件有效。IE7 及更早版本對嵌入腳本也支持這個屬性。
language:已廢棄。原來用于表示編寫代碼使用的腳本語言(如 JavaScript、JavaScript1.2 或 VBScript)。大多數(shù)瀏覽器會忽略這個屬性,因此也沒有必要再用了。
src:可選。表示包含要執(zhí)行代碼的外部文件。
type:可選。可以看成是 language 的替代屬性;表示編寫代碼使用的腳本語言的內(nèi)容類型(也稱為 MIME 類型)。這個屬性并不是必需的,如果沒有指定這個屬性,則其默認(rèn)值仍為 text/javascript。
百度百科解釋:
MIME(Multipurpose Internet Mail Extensions)多用途互聯(lián)網(wǎng)郵件擴展類型。是設(shè)定某種擴展名的文件用一種應(yīng)用程序來打開的方式類型,當(dāng)該擴展名文件被訪問的時候,瀏覽器會自動使用指定應(yīng)用程序來打開。多用于指定一些客戶端自定義的文件名,以及一些媒體文件打開方式
通俗的將,MIME類型就是告訴瀏覽器用什么程序解析傳遞給他的文件,而前端涉及到MIME類型的也就是與后臺交互時。http 協(xié)議中常見的MIME:參考維基百科
text/plain(純文本)
text/html(超文本標(biāo)記語言)
image/png(PNG圖像)【PHP中為:image/x-png】
application/x-www-form-urlencoded(使用HTTP的POST方法提交的表單)
DOM 文檔的執(zhí)行順序兩個屬性都是用來設(shè)定外部腳本執(zhí)行的方式,在詳細講解兩個屬性的區(qū)別之前,先看一下DOM文檔的加載順序:
解析HTML結(jié)構(gòu);
加載外部腳本和樣式表文件;
解析并執(zhí)行腳本代碼;
DOM樹構(gòu)建完成;//DOMContentLoaded
加載圖片等外部文件;
頁面加載完畢;//load
由于瀏覽器采用至上而下的方式解析,所以會先解析html,直到遇到外部樣式和外部腳本。這時會阻塞瀏覽器的解析,外部樣式和外部腳本(在沒有async、defer屬性下)會并行加載,但是外部樣式會阻塞外部腳本的執(zhí)行(查看css和js的阻塞請點擊)。
即:html解析->外部樣式、腳本加載->外部樣式執(zhí)行->外部腳本執(zhí)行->html繼續(xù)解析
async和defer屬性決定了js腳本的執(zhí)行方式,內(nèi)嵌式的腳本會忽略這兩個屬性
defer:腳本會被延遲到整個頁面都解析完畢后再執(zhí)行
書中的例子和解釋:
Example HTML Page