2.1 script元素元素
1.結(jié)束之前任何地方都不要出現(xiàn)
2.引用外部js文件 用到src屬性 * js文件的擴(kuò)展名不是必須的 php jsp可以動態(tài)生成js代碼 但是要確保服務(wù)器能不能返回正確的mime類型。
3.會優(yōu)先執(zhí)行外部文件而不是嵌入文件。
4元素都放在head中 等js全部被執(zhí)行時在呈現(xiàn)內(nèi)容 會出現(xiàn)延遲,所以要放在body內(nèi)容的后面。(這是最佳選擇 因?yàn)閐efer屬性會被很多瀏覽器忽略掉)
5.script元素中設(shè)置defer屬性 相當(dāng)于告訴瀏覽器立即下載但延遲執(zhí)行, 最好只有一個延遲腳本。
6.異步腳本:async屬性 ,不讓頁面等待兩個腳本下載和執(zhí)行 從而異步(不同步)加載頁面其他內(nèi)容,建議異步腳本不要在加載期間修改dom。
7.在XML中 < >這種符號不可以直接用 容易被解讀為標(biāo)簽 所以要用<等 還可以在script內(nèi)的函數(shù)前加< ! [CDATA[ *** ]] 對于不兼容cdata的瀏覽器可以注釋掉。
8.外部文件有點(diǎn):可維護(hù) 可緩存 ?適應(yīng)未來?
9.文檔模式:混雜模式和標(biāo)準(zhǔn)模式(通過doctype實(shí)現(xiàn)的 大概了解就行)
10.<noscript> 當(dāng)瀏覽器禁用腳本或者瀏覽器不支持腳本的情況下才會顯示其中內(nèi)容
小結(jié):
js外部文件可以是統(tǒng)一服務(wù)器上的文件也可以是其他任何域中的文件
script元素會按順序依次被解析 不使用defer或者async屬性時 先解析前面內(nèi)容在解析后面的
defer屬性會在內(nèi)容呈現(xiàn)后再執(zhí)行腳本 瀏覽器會先解析不使用defer屬性的內(nèi)容
asynu屬性不能保證異步腳本按他們的順序執(zhí)行