C1 JavaScript簡(jiǎn)介
表單驗(yàn)證
簡(jiǎn)史
1995:Netscape發(fā)布JavaScript 1.0荠商,同時(shí)Microsoft發(fā)布JScript,暫無(wú)標(biāo)準(zhǔn)
1997:JavaScript 1.1 —> ECMA —> 確定ECMAScript為JavaScript標(biāo)準(zhǔn)
1998:ISO/IEC采用ECMAScript作為標(biāo)準(zhǔn)沪斟,自此瀏覽器開(kāi)發(fā)商均將ECMAScript作為JavaScript實(shí)現(xiàn)基礎(chǔ)
實(shí)現(xiàn)
完整的JavaScript包括:
- 核心(ECMAScript)
- 語(yǔ)法静檬、類型帘营、語(yǔ)句图谷、關(guān)鍵字翩活、保留字阱洪、操作符、對(duì)象
- 由ECMA-262定義菠镇,提供核心語(yǔ)言功能
- 文檔對(duì)象模型(DOM)
- DOM將整個(gè)頁(yè)面映射為一個(gè)多層節(jié)點(diǎn)結(jié)構(gòu)
- 提供訪問(wèn)和操作網(wǎng)頁(yè)內(nèi)容的方法和接口
- 瀏覽器對(duì)象模型(BOM)
- 提供與瀏覽器交互的方法和接口
C2 在HTML中使用JavaScript
向HTML頁(yè)面中插入JavaScript的標(biāo)簽/元素澄峰,可直接在頁(yè)面中嵌入JavaScript代碼和包含外部JavaScript腳本文件。
屬性:
- async:可選辟犀。是否立即下載腳本,且不妨礙頁(yè)面中的其他操作绸硕。只對(duì)外部腳本文件有效
- charset:可選堂竟。表示src指定代碼的字符集,大多數(shù)瀏覽器會(huì)忽略此屬性
- defer:可選玻佩。腳本可以延遲到文檔完全被解析和顯示之后再執(zhí)行出嘹。只對(duì)外部腳本文件有效
- language:廢棄
- src:可選。指定外部腳本文件路徑
- type:可選咬崔。language的替代屬性税稼,表示編寫(xiě)代碼使用的腳本語(yǔ)言的內(nèi)容類型(MIME類型),默認(rèn)為“text/javascript”
如果不存在defer和async屬性垮斯,瀏覽器都會(huì)按照script元素在頁(yè)面中出現(xiàn)的先后順序?qū)δ_本文件依次解析(順序執(zhí)行)
位置
- 傳統(tǒng)做法郎仆,是放在頁(yè)面的head元素中。
- 現(xiàn)代web應(yīng)用程序一般都把全部的js引用放在body元素中頁(yè)面內(nèi)容的后面兜蠕。(博客測(cè)試一下)
延遲腳本-defer屬性
- defer=“defer”
- 使用defer屬性后扰肌,外部腳本文件(因?yàn)榇藢傩灾粚?duì)外部腳本文件生效,老版本的瀏覽器不在考慮范圍之內(nèi))會(huì)被立即下載熊杨,并延遲到整個(gè)頁(yè)面都解析完畢后(DOMContentLoaded事件前)再順序執(zhí)行曙旭。
- 現(xiàn)實(shí)情況下,延遲腳本并不一定按照順序執(zhí)行晶府,而且不一定會(huì)在DOMContentLoaded事件觸發(fā)前執(zhí)行桂躏。
異步腳本-async屬性
- async=“async”
- 使用async屬性后,||外部腳本文件會(huì)被立即下載川陆,并延遲到整個(gè)頁(yè)面都解析完畢后再異步執(zhí)行剂习,即與defer屬性不同的是,async并不保證標(biāo)記為async屬性的外部腳本按照順序執(zhí)行|| 表示當(dāng)前腳本不必等待其他腳本书劝,也不必阻塞文檔呈現(xiàn)进倍,且不保證異步腳本按照頁(yè)面順序執(zhí)行(筆者注:會(huì)被立即下載)。
- 可能DOMContentLoaded事件前后執(zhí)行购对,但一定會(huì)在頁(yè)面的load事件(詳見(jiàn)CH3-事件)前執(zhí)行猾昆。
- 建議異步腳本不要再加載期間修改DOM
嵌入代碼與外部文件
建議使用外部文件的方式。
可維護(hù)骡苞、可緩存垂蜗、適應(yīng)未來(lái)
文檔模式
- 混雜模式
- 標(biāo)準(zhǔn)模式
- 準(zhǔn)標(biāo)準(zhǔn)模式
noscript元素
- 瀏覽器不支持腳本
- 瀏覽器支持腳本楷扬,但腳本被禁用