JavaScript高級(jí)程序設(shè)計(jì)上課講義_第1頁
JavaScript高級(jí)程序設(shè)計(jì)上課講義_第2頁
JavaScript高級(jí)程序設(shè)計(jì)上課講義_第3頁
JavaScript高級(jí)程序設(shè)計(jì)上課講義_第4頁
JavaScript高級(jí)程序設(shè)計(jì)上課講義_第5頁
已閱讀5頁,還剩415頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Good is good, but better carries it.精益求精,善益求善。JavaScript高級(jí)程序設(shè)計(jì)第1章JavaScript是什么131.1歷史簡(jiǎn)述11.2JavaScript實(shí)現(xiàn)21.2.1ECMAScript1.2.2DOM51.2.3BOM81.3小結(jié)8第2章ECMAScript基礎(chǔ)92.1語法92.2變量102.3關(guān)鍵字122.4保留字122.5原始值和引用值132.6原始類型132.6.1typeof運(yùn)算符142.6.2Undefined類型142.6.3Null類型152.6.4Boolean類型152.6.5Number類型152.6.6String類型

2、172.7轉(zhuǎn)換182.7.1轉(zhuǎn)換成字符串182.7.2轉(zhuǎn)換成數(shù)字192.7.3強(qiáng)制類型轉(zhuǎn)換202.8引用類型222.8.1Object類222.8.2Boolean類232.8.3Number類232.8.4String類242.8.5instanceof運(yùn)算符282.9運(yùn)算符282.9.1一元運(yùn)算符282.9.2位運(yùn)算符322.9.3Boolean運(yùn)算符372.9.4乘性運(yùn)算符402.9.5加性運(yùn)算符412.9.6關(guān)系運(yùn)算符422.9.7等性運(yùn)算符432.9.8條件運(yùn)算符452.9.9賦值運(yùn)算符452.9.10逗號(hào)運(yùn)算符462.10語句462.10.1if語句462.10.2迭代語句472.

3、10.3有標(biāo)簽的語句482.10.4break語句和continue語句482.10.5with語句502.10.6switch語句502.11函數(shù)512.11.1無重載532.11.2arguments對(duì)象532.11.3Function類542.11.4閉包562.12小結(jié)57第3章對(duì)象基礎(chǔ)583.1面向?qū)ο笮g(shù)語583.1.1面向?qū)ο笳Z言的要求583.1.2對(duì)象的構(gòu)成593.2對(duì)象應(yīng)用593.2.1聲明和實(shí)例化593.2.2對(duì)象引用593.2.3對(duì)象廢除593.2.4早綁定和晚綁定603.3對(duì)象的類型603.3.1本地對(duì)象603.3.2內(nèi)置對(duì)象703.3.3宿主對(duì)象753.4作用域753.

4、4.1公用、受保護(hù)和私有作用域753.4.2靜態(tài)作用域并非靜態(tài)的763.4.3關(guān)鍵字this.763.5定義類或?qū)ο?83.5.1工廠方式783.5.2構(gòu)造函數(shù)方式803.5.3原型方式803.5.4混合的構(gòu)造函數(shù)/原型方式813.5.5動(dòng)態(tài)原型方法823.5.6混合工廠方式833.5.7采用哪種方式843.5.8實(shí)例843.6修改對(duì)象863.6.1創(chuàng)建新方法863.6.2重定義已有方法873.6.3極晚綁定883.7小結(jié)88第4章繼承.104891004.1繼承機(jī)制實(shí)例894.2繼承機(jī)制的實(shí)現(xiàn)904.2.1繼承的方式904.2.2一個(gè)更實(shí)際的例子964.3其他繼承方式1004.3.1zInh

5、erit4.3.2xbObjects4.4小結(jié)108第5章瀏覽器中的JavaScript1095.1HTML中的JavaScript1095.1.1標(biāo)簽1095.1.2外部文件格式1105.1.3內(nèi)嵌代碼和外部文件1115.1.4標(biāo)簽放置1115.1.5隱藏還是不隱藏1135.1.6標(biāo)簽1135.1.7XHTML中的改變1145.2SVG中的JavaScript1165.2.1SVG基礎(chǔ)1165.2.2SVG中的標(biāo)簽1175.2.3SVG中的標(biāo)簽放置1185.3BOM1195.3.1window對(duì)象1195.3.2document對(duì)象1305.3.3location對(duì)象1335.3.4navi

6、gator對(duì)象1355.3.5screen對(duì)象1365.4小結(jié)137第6章DOM基礎(chǔ)1386.1什么是DOM?1386.1.1XML簡(jiǎn)介1386.1.2針對(duì)XML的API1416.1.3節(jié)點(diǎn)的層次1416.1.4特定語言的DOM1446.2對(duì)DOM的支持1456.3使用DOM1456.3.1訪問相關(guān)的節(jié)點(diǎn)1456.3.2檢測(cè)節(jié)點(diǎn)類型1466.3.3處理特性1476.3.4訪問指定節(jié)點(diǎn)1486.3.5創(chuàng)建和操作節(jié)點(diǎn)1506.4HTMLDOM特征功能1556.4.1讓特性像屬性一樣1556.4.2table方法1566.5遍歷DOM1586.5.1NodeIterator.1586.5.2Tree

7、Walker.1636.6測(cè)試與DOM標(biāo)準(zhǔn)的一致性1656.7DOMLevel3.1666.8小結(jié)166第7章正則表達(dá)式1677.1正則表達(dá)式支持1677.1.1使用RegExp對(duì)象1687.1.2擴(kuò)展的字符串方法1697.2簡(jiǎn)單模式1707.2.1元字符1707.2.2使用特殊字符1707.2.3字符類1727.2.4量詞1747.3復(fù)雜模式1777.3.1分組1777.3.2反向引用1787.3.3候選1797.3.4非捕獲性分組1807.3.5前瞻1817.3.6邊界1827.3.7多行模式1837.4理解RegExp對(duì)象1847.4.1實(shí)例屬性1847.4.2靜態(tài)屬性1857.5常用模

8、式1867.5.1驗(yàn)證日期1877.5.2驗(yàn)證信用卡號(hào)1887.5.3驗(yàn)證電子郵件地址1927.6小結(jié)193第8章檢測(cè)瀏覽器和操作系統(tǒng)201194.2008.1navigator對(duì)象194.1988.2檢測(cè)瀏覽器的方式1948.2.1對(duì)象/特征檢測(cè)法1948.2.2user-agent字符串檢測(cè)法1958.3user-agent字符串簡(jiǎn)史1968.3.1NetscapeNavigator3.0與IE3.0.1968.3.2NetscapeCommunicator4.0與IE4.0.1978.3.3IE5.0及更高版本1988.3.4Mozilla8.3.5Opera8.3.6Safari8.3

9、.7結(jié)語2018.4瀏覽器檢測(cè)腳本2018.4.1方法學(xué)2028.4.2第一步2028.4.3檢測(cè)Opera2048.4.4檢測(cè)Konqueror/Safari2068.4.5檢測(cè)IE2088.4.6檢測(cè)Mozilla2098.5平臺(tái)/操作系統(tǒng)檢測(cè)腳本2118.5.1方法學(xué)2118.5.2第一步2128.5.3檢測(cè)Windows操作系統(tǒng)2128.5.4檢測(cè)Macintosh操作系統(tǒng)2148.5.5檢測(cè)Unix操作系統(tǒng)2148.6全部腳本2158.7例子:登錄頁面2198.8小結(jié)224第9章事件2259.1今天的事件2259.2事件流2269.2.1冒泡型事件2269.2.2捕獲型事件2279.

10、2.3DOM事件流2289.3事件處理函數(shù)/監(jiān)聽函數(shù)2292309.3.1IE9.3.2DOM2319.4事件對(duì)象2329.4.1定位2339.4.2屬性2339.4.3相似性2359.4.4區(qū)別2389.5事件的類型2409.5.1鼠標(biāo)事件2409.5.2鍵盤事件2449.5.3HTML事件2469.5.4變化事件2519.6跨平臺(tái)的事件2529.6.1EventUtil對(duì)象2529.6.2添加/刪除事件處理函數(shù)2529.6.3格式化event對(duì)象2549.6.4獲取事件對(duì)象2589.6.5示例2599.7小結(jié)260第10章高級(jí)DOM技術(shù)26110.1樣式編程26110.1.1DOM樣式的方

11、法26310.1.2自定義鼠標(biāo)提示26410.1.3可折疊區(qū)域26510.1.4訪問樣式表26610.1.5最終樣式27010.2innerText和innerHTML.27110.3outerText和outerHTML.27310.4范圍27410.4.1DOM中的范圍27410.4.2IE中的范圍28410.4.3范圍在實(shí)際中的應(yīng)用28810.5小結(jié)288第11章表單和數(shù)據(jù)完整性28911.1表單基礎(chǔ)28911.2對(duì)元素進(jìn)行腳本編寫29111.2.1獲取表單的引用29111.2.2訪問表單字段29111.2.3表單字段的共性29211.2.4聚焦于第一個(gè)字段29211.2.5提交表單29

12、311.2.6僅提交一次29411.2.7重置表單29511.3文本框29511.3.1獲取/更改文本框的值29611.3.2選擇文本29711.3.3文本框事件29811.3.4自動(dòng)選擇文本29811.3.5自動(dòng)切換到下一個(gè)29911.3.6限制textarea的字符數(shù)30011.3.7允許/阻止文本框中的字符30111.3.8使用上下按鍵操作數(shù)字文本30611.4列表框和組合框30811.4.1訪問選項(xiàng)30911.4.2獲取/更改選中項(xiàng)30911.4.3添加選項(xiàng)31011.4.4刪除選項(xiàng)31111.4.5移動(dòng)選項(xiàng)31211.4.6重新排序選項(xiàng)31311.5創(chuàng)建自動(dòng)提示的文本框31311.5

13、.1匹配31411.5.2內(nèi)部機(jī)制31411.6小結(jié)316第12章表格排序31712.1起點(diǎn)數(shù)組31712.2對(duì)單列的表格排序31912.2.1比較函數(shù)32012.2.2sortTable()函數(shù)32012.3對(duì)多列表格進(jìn)行排序32312.3.1比較函數(shù)生成器32312.3.2修改sortTable()方法32412.3.3逆序排列32512.3.4對(duì)不同的數(shù)據(jù)類型進(jìn)行排序32712.3.5高級(jí)排序33012.4小結(jié)334第13章拖放33513.1系統(tǒng)拖放33513.1.1拖放事件33613.1.2數(shù)據(jù)傳輸對(duì)象dataTransfer.34113.1.3dragDrop()方法34513.1.

14、4優(yōu)點(diǎn)及缺點(diǎn)34613.2模擬拖放34613.2.1代碼34713.2.2創(chuàng)建放置目標(biāo)34913.2.3優(yōu)點(diǎn)及缺點(diǎn)35213.3zDragDrop.35213.3.1創(chuàng)建可拖動(dòng)元素35213.3.2創(chuàng)建放置目標(biāo)35313.3.3事件35313.3.4例子35413.4小結(jié)355第14章錯(cuò)誤處理35614.1錯(cuò)誤處理的重要性35614.2錯(cuò)誤和異常35714.3錯(cuò)誤報(bào)告35814.3.1IE(Windows)35814.3.2IE(MacOS)35914.3.3Mozilla(所有平臺(tái))35914.3.4Safari(MacOS)36014.3.5Opera7(所有平臺(tái))36114.4處理錯(cuò)誤3

15、6214.4.1onerror事件處理函數(shù)36214.4.2try.catch語句36514.5調(diào)試技巧37014.5.1使用警告框37014.5.2使用Java控制臺(tái)37114.5.3將消息寫入JavaScript控制臺(tái)(僅限Opera7+)37214.5.4拋出自定義錯(cuò)誤37214.5.5JavaScript校驗(yàn)器37314.6調(diào)試器37414.6.1MicrosoftScriptDebugger37414.6.2Venkman.37614.7小結(jié)383第15章JavaScript中的XML.38415.1瀏覽器中的XMLDOM支持38415.1.1IE中的XMLDOM支持38415.1.

16、2Mozilla中XMLDOM支持38815.1.3通用接口39315.2瀏覽器中的XPath支持40315.2.1XPath簡(jiǎn)介40315.2.2IE中的XPath支持40415.2.3Mozilla中的XPath支持40415.3瀏覽器中的XSLT支持40815.3.1IE中的XSLT支持41015.3.2Mozilla中XSLT支持41315.4小結(jié)415第16章客戶端與服務(wù)器端的通信41616.1cookie.41616.1.1cookie的成分41616.1.2其他安全限制41716.1.3JavaScript中的cookie.41716.1.4服務(wù)器端的cookie.41916.1

17、.5在客戶端與服務(wù)器端之間傳遞cookie.42216.2隱藏框架42316.3HTTP請(qǐng)求42616.3.1使用HTTP首部42816.3.2實(shí)現(xiàn)的復(fù)制品42916.3.3進(jìn)行GET請(qǐng)求43016.3.4進(jìn)行POST請(qǐng)求43016.4LiveConnect請(qǐng)求43116.4.1進(jìn)行GET請(qǐng)求43116.4.2進(jìn)行POST請(qǐng)求43316.5智能HTTP請(qǐng)求43516.5.1get()方法43516.5.2post()方法43816.6實(shí)際使用43916.7小結(jié)439第17章Web服務(wù)44017.1Web服務(wù)快速入門44017.1.1Web服務(wù)是什么?44017.1.2WSDL.44117.2I

18、E中的Web服務(wù)44317.2.1使用WebService組件44417.2.2WebService組件例子44517.3Mozilla中的Web服務(wù)44717.3.1加強(qiáng)的特權(quán)44717.3.2使用SOAP方法44817.3.3使用WSDL代理45117.4跨瀏覽器的方案45417.4.1WebService對(duì)象45417.4.2Temperature服務(wù)45617.4.3使用TemperatureService對(duì)象45817.5小結(jié)458第18章與插件進(jìn)行交互45918.1為何使用插件45918.2流行的插件46018.3MIME類型46018.4嵌入插件46118.4.1加入?yún)?shù)4611

19、8.4.2Netscape4.x.46218.5檢測(cè)插件46218.5.1檢測(cè)Netscape式插件46318.5.2檢測(cè)ActiveX插件46718.5.3跨瀏覽器檢測(cè)46918.6Javaapplet47018.6.1嵌入applet47018.6.2在JavaScript中引用applet47118.6.3創(chuàng)建applet47118.6.4JavaScript到Java的通信47218.6.5Java到JavaScript的通信47518.7Flash動(dòng)畫47718.7.1嵌入Flash動(dòng)畫47718.7.2引用Flash動(dòng)畫47818.7.3JavaScript到Flash的通信478

20、18.7.4Flash到JavaScript通信48118.8ActiveX控件48318.9小結(jié)485第19章部署問題48619.1安全性48619.1.1同源策略48619.1.2窗口對(duì)象問題48719.1.3Mozilla特有的問題48819.1.4資源限制49019.2國(guó)際化49119.2.1使用JavaScript檢測(cè)語言49119.2.2策略49219.2.3字符串的思考49219.3優(yōu)化JavaScript49519.3.1下載時(shí)間49519.3.2執(zhí)行時(shí)間49919.4知識(shí)產(chǎn)權(quán)的問題51219.4.1混淆51219.4.2MicrosoftScriptEncoder(僅IE)5

21、1319.5小結(jié)514第20章JavaScript的未來51520.1ECMAScript4.51520.1.1Netscape的提案51520.1.2實(shí)現(xiàn)52120.2ECMAScriptforXML.52220.2.1途徑52220.2.2foreach.in循環(huán)52420.2.3新的類52420.2.4實(shí)現(xiàn)53220.3小結(jié)532雖然服務(wù)器端的NetscapeEnterpriseServer和ActiveServerPages(ASP)都曾經(jīng)支持過Javascript,但它主要還是Web瀏覽器使用的客戶端腳本語言。目前它的重點(diǎn)是幫助開發(fā)者與Web頁面和Web瀏覽器窗口本身進(jìn)行交互。Jav

22、ascript是一種不嚴(yán)格基于Java的面向?qū)ο蟪绦蛟O(shè)計(jì)語言,以嵌入式Java小程序的形式在Web上廣為使用。雖然Javascript的語法和程序設(shè)計(jì)方法都與Java相似,但它并非Java語言的簡(jiǎn)化版本。相反的,Javascript是一種獨(dú)立的語言,在全世界的Web瀏覽器中都可以找到它,啟用它可以增強(qiáng)用戶與Web站點(diǎn)和Web應(yīng)用程序之間的交互。本書從最早期的Netscape瀏覽器中的Javascript開始講起,直到當(dāng)前它對(duì)XML和Web服務(wù)的具體支持。你將學(xué)到如何擴(kuò)展這種語言,使它適應(yīng)特殊的需求,還會(huì)學(xué)到如何在沒有Java或隱藏框架這些媒介的情況下創(chuàng)建無縫的客戶服務(wù)器通信。簡(jiǎn)而言之,你將學(xué)到

23、如何將Javascript解決方案應(yīng)用到Web開發(fā)者面對(duì)的商業(yè)問題上。本書涵蓋的內(nèi)容本書提供的是開發(fā)者級(jí)別的Javascript介紹,包括很多高級(jí)的有用特性。本書開頭探討了Javascript的起源以及迄今為止的發(fā)展。之后詳細(xì)介紹了構(gòu)成Javascript實(shí)現(xiàn)的各個(gè)組件,著重介紹了ECMAScript和文檔對(duì)象模型DOM這樣的標(biāo)準(zhǔn)。此外還討論了不同Web瀏覽器中使用的Javascript實(shí)現(xiàn)的不同。基于上述討論,本書開始介紹Javascript的基本概念,包括面向?qū)ο蟮某绦蛟O(shè)計(jì)版本、繼承性以及它在各種標(biāo)記語言(如HTML)中的用法。在探討了瀏覽器檢測(cè)技術(shù),介紹過在Javascript中使用正則

24、表達(dá)式后,本書對(duì)事件和事件處理進(jìn)行了深度考察。之后,它應(yīng)用了所有這些知識(shí),來創(chuàng)建動(dòng)態(tài)用戶界面。本書最后一部分的重點(diǎn)是與在Web應(yīng)用程序中部署Javascript解決方案有關(guān)的問題。這些主題包括錯(cuò)誤處理、調(diào)試、安全性、優(yōu)化/模糊化、XML和Web服務(wù)器。本書的適用對(duì)象本書針對(duì)的讀者群有三類:熟悉面向?qū)ο蟪绦蛟O(shè)計(jì)方法,由于Javascript與傳統(tǒng)的OO語言(如Java和C+)相關(guān)所以想學(xué)習(xí)它的的有經(jīng)驗(yàn)的開發(fā)者。嘗試提高Web站點(diǎn)和Web應(yīng)用程序可用性的Web應(yīng)用程序開發(fā)者。目的在于更好理解Javascript語言的初學(xué)者。此外,如果你熟悉下列相關(guān)技術(shù),那么表明本書也適用于你:XMLXSLTJav

25、aWebServicesHTMLCSS本書針對(duì)的不是沒有計(jì)算機(jī)科學(xué)的基礎(chǔ)背景的初學(xué)者,也不是那些想在Web站點(diǎn)添加一些簡(jiǎn)單的用戶交互特性的人。這些讀者應(yīng)該閱讀Wrox編寫的BeginningJavascript一書的第二版(WilleyPublishing,Inc.,ISBN0-7645-5587-1)。使用本書的前提需求要運(yùn)行本書中的示例,需要下列軟件:Windows2000、WindowsServer2003、WindowsXP或MacOSXInternetExplorer5.5或更高版本(Windows)、Mozilla1.0或更高版本(所有平臺(tái))、Opera7.5或更高版本(所有平臺(tái))

26、、Safari1.2或更高版本(MacOSX)從本書的站點(diǎn)HYPERLINK/可以下載書中示例的完整源代碼。本書的結(jié)構(gòu)Javascript是什么?這一章解釋了Javascript的起源,它是怎樣長(zhǎng)生的,如何發(fā)展,現(xiàn)狀如何。引入的概念包括Javascript和ECMAScript、文檔對(duì)象模型DOM以及瀏覽器對(duì)象模型BOM之間的關(guān)系。此外還有與歐洲計(jì)算機(jī)制造商協(xié)會(huì)ECMA和W3C有關(guān)的各項(xiàng)標(biāo)準(zhǔn)。ECMAScript基礎(chǔ)這一章分析了Javascript基于的核心技術(shù)ECMAScript。從變量和函數(shù)的聲明到使用和理解原始與引用值,它說明了編寫Javascript代碼必需的基礎(chǔ)語法和概念。對(duì)象基礎(chǔ)這

27、一章的重點(diǎn)是用Javascript進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì)(OOP)的基礎(chǔ)。涵蓋的主題包括用各種方法定義定制的對(duì)象、創(chuàng)建對(duì)象實(shí)例以及了解Javascript和Java中的OOP的相同點(diǎn)和不同點(diǎn)。繼承性這一章繼續(xù)解釋Javascript中的OOP,說明了繼承機(jī)制是如何作用的,其中討論了各種實(shí)現(xiàn)繼承性的方法,并且還比較了它們與Java中的繼承性的異同。瀏覽器中的Javascript這一章解釋了如何把Javascript嵌入用各種語言(如HTML、SVG和XUL)編寫的Web頁。此外還介紹了瀏覽器對(duì)象模型BOM及它的各種對(duì)象和接口。DOM基礎(chǔ)這一章介紹了Javascript中實(shí)現(xiàn)的DOM,包括專門適用

28、于Web開發(fā)者的DOM概念。后面用HTML、SVG和XUL編寫的示例中使用了這些概念。正則表達(dá)式這一章的重點(diǎn)是Javascript實(shí)現(xiàn)的正則表達(dá)式,這是數(shù)據(jù)驗(yàn)證和字符串操作的強(qiáng)有力工具。本章探討了正則表達(dá)式的起源、語法以及它在各種程序設(shè)計(jì)語言中用法。本章的結(jié)尾探討了正則表達(dá)式在Javascript實(shí)現(xiàn)中的異同。探測(cè)瀏覽器和操作系統(tǒng)這一章解釋了編寫能在各種Web瀏覽器上運(yùn)行的Javascript腳本的重要性。它討論了兩種探測(cè)瀏覽器的方法,即對(duì)象/特性探測(cè)法和用戶代理字符串探測(cè)法,每種方法的優(yōu)點(diǎn)和缺點(diǎn)都被列了出來。事件本章討論了Javascript中最重要的概念之一事件。事件是把Javascrip

29、t和任何標(biāo)記語言編寫的Web用戶界面連接在一起的主要方法。這一章介紹了事件處理的各種方法和事件流的概念(包括冒泡和捕捉)。高級(jí)DOM技術(shù)這一章介紹了一些更高級(jí)的DOM特性,包括范圍和樣式表操作。我舉了一個(gè)例子,說明如何使用這些技術(shù),此外還討論了如何實(shí)在跨瀏覽器的支持。表單和數(shù)據(jù)完整性這一章討論了使用表單時(shí)數(shù)據(jù)驗(yàn)證的重要性。在介紹處理驗(yàn)證的方法時(shí),還應(yīng)用了前面介紹過的概念,如正則表達(dá)式、事件和DOM操作。表排序這一章應(yīng)用了前面介紹過的多種特性,來實(shí)現(xiàn)客戶端的動(dòng)態(tài)表排序。其中包括用Javascript進(jìn)行排序的深度討論,以及如何用事件、DOM操作和比較運(yùn)算符開發(fā)各種Web瀏覽器都能使用的通用表排序

30、協(xié)議。拖放這一章解釋了拖放的概念以及它們?cè)贘avascript和Web瀏覽器中的應(yīng)用。其中討論了系統(tǒng)拖放的概念和模擬拖放的概念,結(jié)尾創(chuàng)建了一個(gè)能跨瀏覽器使用的標(biāo)準(zhǔn)拖放界面。錯(cuò)誤處理這一章通過討論trycatch語句和onerror事件處理程序的用法介紹了Javascript中的事件處理概念。另一個(gè)主題是用throw語句創(chuàng)建定制的錯(cuò)誤消息以及Javascript調(diào)試器的用法。Javascript中的XML這一章介紹了Javascript用于讀取和操作可擴(kuò)展標(biāo)記語言(XML)數(shù)據(jù)的特性。我解釋了各種Web瀏覽器的支持和對(duì)象的不同,還為跨瀏覽器編碼提供了建議。此外,本章還介紹了如何用XSLT語言轉(zhuǎn)換

31、客戶端的XML數(shù)據(jù)。客戶服務(wù)器通信這一章探討了Javascript與服務(wù)器通信的各種方法。這些方法包括使用cookie和基于Javascript的HTTP請(qǐng)求。此外,這一章還解釋了如何在不使用隱藏框架的情況下實(shí)現(xiàn)GET和POSTHTTP請(qǐng)求。Web服務(wù)這一章介紹了如何用Javascript提供Web服務(wù),其中討論了InternetExplorer和Mozilla中使用的不同方法,還為原本沒有Web服務(wù)支持的瀏覽器提供了一種基本的Web服務(wù)解決方案。用插件進(jìn)行交互這一章解釋了Javascript和各種瀏覽器插件(如Java小程序、SVG文檔和ActiveX控件)之間的通信方法。其他主題包括如何編

32、寫能與Javascript一起使用的插件。部署問題這一章的重點(diǎn)是完成Javascript編碼后的操作。它說明了在把Javascript解決方案部署到Web站點(diǎn)或Web應(yīng)用程序之前要做哪些操作。其中的主題包括安全問題、國(guó)際化問題、優(yōu)化、知識(shí)產(chǎn)權(quán)保護(hù)和Section508Compliance。Javascript的發(fā)展這一章探察了Javascript的未來,介紹了這種語言的發(fā)展方向。其中討論了ECMAScript的ECMAScript4和XML。規(guī)約為了幫助你最大限度的利用本書,我在全書中使用了大量規(guī)約。這樣的矩形框中放置的是重要的、不容忘記的信息,它與周圍的內(nèi)容直接相關(guān)。提示、暗示、小竅門和離題

33、話都像這樣用斜體顯示,前面有縮進(jìn)。至于文本中的樣式:在介紹重要的單詞時(shí),高亮顯示它們用Ctrl+A這樣的形式說明鍵盤按鍵正文中的文件名、URL和代碼用perties這樣的形式顯示代碼有兩種形式:PXXV代碼源代碼在練習(xí)本書中的示例時(shí),可以選擇手動(dòng)輸入代碼,也可以使用本書附帶的源代碼文件。在HYPERLINK/處可以下載到本書中使用的所有源代碼。進(jìn)入該站點(diǎn)后,只需要找到本書的名字(或者使用Search框,又或者點(diǎn)擊列表中的一個(gè)名字),點(diǎn)擊本書的細(xì)節(jié)頁面中的DownloadCode鏈接,可以找到本書中的源代碼。由于許多數(shù)的名字相似,所以用ISBN號(hào)檢索本書更容易找到它。本書的ISBN號(hào)是0-764

34、5-7908-8。下載了代碼后,用解壓縮工具把它解壓縮。此外,還可以在Wrox的主下載頁面HYPERLINK/dynamic/books/download.aspx/dynamic/books/download.aspx處找到本書和其他Wrox出版的書的代碼??闭`表我們一直努力確保代碼或正文中沒有錯(cuò)誤。不過,是人都會(huì)犯錯(cuò)誤。如果你發(fā)現(xiàn)了我們出版的書中的錯(cuò)誤,例如拼寫錯(cuò)誤或代碼錯(cuò),請(qǐng)告知我們,我們將會(huì)非常感謝。把勘誤表發(fā)給我們,就能節(jié)省其他讀者的時(shí)間,同時(shí)還能幫助我們提高信息的質(zhì)量。在HYPERLINK/處,用Search框或名字列表找到本書的名字,然后在本書的細(xì)節(jié)頁面上點(diǎn)擊BookErrata

35、鏈接,可以找到本書的勘誤表。在這個(gè)頁面上可以找到本書已經(jīng)發(fā)現(xiàn)的所有的錯(cuò)誤,它是由Wrox的編輯發(fā)布的。在HYPERLINK/miscs/booklist.shtml/miscs/booklist.shtml處可以找到Wrox出版的所有書的列表,其中有每本書的勘誤表的鏈接。如果在BookErrata頁面上沒有找到你發(fā)現(xiàn)的錯(cuò)誤,請(qǐng)?jiān)L問HYPERLINK/contact/techsupport.shtml/contact/techsupport.shtml頁面,填寫其中的表單,把你發(fā)現(xiàn)的錯(cuò)誤發(fā)送給我們。我們將檢查你提交的信息,如果正確,就會(huì)把它發(fā)布在本書的勘誤表頁面上,并在本書以后的版本中糾正這一錯(cuò)

36、誤。P2關(guān)于本書的討論,請(qǐng)加入P2P論壇。該論壇是基于Web的系統(tǒng),你可以在此發(fā)布與Wrox出版的書和相關(guān)的技術(shù)有關(guān)的消息,與其他讀者和技術(shù)員進(jìn)行交流。該論壇有預(yù)訂功能,當(dāng)你選擇的感興趣的主題有新帖子發(fā)布時(shí),就會(huì)把它通過email發(fā)送給你。Wrox的作者、編輯、業(yè)界的其他專家和像你一樣的讀者都會(huì)出現(xiàn)在這些論壇中。在HYPERLINK/處可以找到各種對(duì)你有用的論壇,不只是對(duì)你閱讀本書有幫助,對(duì)你開發(fā)程序也有幫助。加入論壇的步驟如下:訪問,點(diǎn)擊Register鏈接。閱讀使用條款,點(diǎn)擊Agree鏈接。填寫所有必需的信息以及你想提供的選填信息,點(diǎn)擊Submit鏈接。你將收到一封email,其中具有驗(yàn)證

37、你的帳戶的信息以及完成加入論壇的操作的信息。即使不加入P2P,也可以閱讀論壇中的消息,不過要發(fā)布自己的消息,就必須加入論壇。加入論壇后,可以發(fā)布新消息,回復(fù)其他用戶發(fā)布的消息。可以隨時(shí)在Web上閱讀論壇上的消息。如果想讓某個(gè)論壇的新消息以email的形式發(fā)送給你,可以點(diǎn)擊SubscribetoThisForum圖標(biāo),然后在論壇列表中選擇你要預(yù)訂的論壇的名字。要了解更多如何使用WroxP2P論壇的信息,請(qǐng)閱讀P2PFAQs,可以看到論壇軟件是如何運(yùn)行的,以及與P2P和Wrox出版的書相關(guān)的常見問題的答案。要閱讀FAQ,請(qǐng)點(diǎn)擊P2P頁面上的FAQ鏈接。親愛的讀者:當(dāng)您從書架上拿出這本書的時(shí)候,我想

38、您肯定對(duì)Ajax技術(shù)有著濃厚的興趣,而本書也正是您的正確選擇。本書的作者NicholasC.Zakas用通俗易懂的語言,將JavaScript的誕生、現(xiàn)在的狀況、未來的發(fā)展和與其緊密相關(guān)的各種技術(shù)一一詳盡地?cái)⑹龀鰜?,剛學(xué)JavaScript的朋友,可以按部就班成為高手,而已經(jīng)是高手的朋友,則可以將本書作為參考手冊(cè)。第1章講述了JavaScript的起源,給大家一個(gè)關(guān)于JavaScript正確的認(rèn)知。第25章詳細(xì)介紹了JavaScript語言本身,揭示了一些JavaScript不為認(rèn)知的語言特點(diǎn)。第69章介紹了JavaScript和瀏覽器進(jìn)行交互的一些基礎(chǔ)知識(shí)和一些進(jìn)階知識(shí),如DOM的基礎(chǔ)、正則

39、表達(dá)式。第1013章介紹了一些更加高級(jí)的JavaScript技巧,這些技巧可以構(gòu)建良好的客戶端邏輯,包括表格排序、拖動(dòng)等。第14章關(guān)于錯(cuò)誤處理的內(nèi)容,既有如何編程處理JavaScript錯(cuò)誤,也包含了如何調(diào)試JavaScript的方法,而調(diào)試一直是JavaScript的弱項(xiàng)。第16、17章講述了利用JavaScript進(jìn)行客戶端到服務(wù)器的同學(xué),不僅僅介紹了現(xiàn)在的Ajax技術(shù)的基礎(chǔ)XMLHTTPRequest,還介紹了曾經(jīng)出現(xiàn)過的一些方法。第17章更明確的介紹了如何調(diào)用Web服務(wù)。第19章,介紹了如何考慮生產(chǎn)環(huán)境中JavaScript所需要注意的一些事情,如安全性、性能等。第20章,展望了Jav

40、aScript未來的發(fā)展。本書除了介紹了JavaScript的各個(gè)方面外,更難得的是,作者更涵蓋了現(xiàn)今各個(gè)流行瀏覽器之間在這些方面的區(qū)別,并幫助讀者,解決這些問題。本書第15章由張欣翻譯,第615章由曹力翻譯,第1620章由王霄翻譯,全書由張欣統(tǒng)稿、潤(rùn)色及審校。還要感謝全體工作人員的努力才將本書完成。我們深深地感我們的家人和朋友。在翻譯過程中,他們給予了我們莫大的關(guān)心、支持和幫助。限于我們的水平,翻譯過程中的疏漏和錯(cuò)誤再作難免,請(qǐng)廣大讀者批評(píng)指正。當(dāng)JavaScript在1995年首次出現(xiàn)時(shí),它的主要目的還只是處理一些輸入的有效性驗(yàn)證,而在此之前這個(gè)工作是留給諸如Perl之類的服務(wù)器端語言來完

41、成的。之前,要確定一個(gè)特定的字段是否空缺或者輸入的值是否無效,必須與服務(wù)器進(jìn)行往返的交互。NetscapeNavigator通過引入JavaScript來試圖改變這種情況。這種直接在客戶端處理一些基本的有效性驗(yàn)證的能力,在剛普及使用電話線調(diào)制解調(diào)器(28.8kbit/s的速率)的時(shí)代,可是一個(gè)令人振奮的新特性。但以如此慢的速度與服務(wù)器往返交互,對(duì)耐性是一種考驗(yàn)。從那以后,JavaScript便成長(zhǎng)為市面上每一個(gè)主要Web瀏覽器都具備的重要特性。同時(shí)JavaScript不僅僅局限于簡(jiǎn)單的數(shù)據(jù)有效性驗(yàn)證,現(xiàn)在幾乎可以與瀏覽器窗口及其內(nèi)容的每一個(gè)方面進(jìn)行交互。微軟公司在早期版本的瀏覽器中僅支持自己的

42、客戶端腳本語言VBScript,但最后也不得不加入了自己的JavaScript實(shí)現(xiàn)。從本章中你可以了解到JavaScript是如何以及為何出現(xiàn)的,從它簡(jiǎn)陋的開始到如今涵蓋各種特性的實(shí)現(xiàn)。為了能充分發(fā)揮JavaScript全部的潛力,了解它的本質(zhì)、歷史及局限性是十分重要的。確切地說,本章著重講解:JavaScript和客戶端腳本編程的起源;JavaScript語言的不同部分;與JavaScript相關(guān)的標(biāo)準(zhǔn);主流Web瀏覽器中的JavaScript支持。1.1歷史簡(jiǎn)述大概在1992年,一家稱作Nombas的公司開始開發(fā)一種叫做C減減(C-minus-minus,簡(jiǎn)稱Cmm)的嵌入式腳本語言。Cm

43、m背后的理念很簡(jiǎn)單:一個(gè)足夠強(qiáng)大可以替代宏操作(macro)的腳本語言,同時(shí)保持與C(和C+)足夠的相似性,以便開發(fā)人員能很快學(xué)會(huì)。這個(gè)腳本語言捆綁在一個(gè)叫做CEnvi的共享軟件產(chǎn)品中,它首次向開發(fā)人員展示了這種語言的威力。Nombas最終把Cmm的名字改成了ScriptEase,原因是后面的部分(mm)聽起來過于“消極”,同時(shí)字母C“令人害怕”(/us/scripting/history.htm)?,F(xiàn)在ScriptEase已經(jīng)成為了Nombas產(chǎn)品背后的主要驅(qū)動(dòng)力。當(dāng)NetscapeNavigator嶄露頭角時(shí),Nombas開發(fā)了一個(gè)可以嵌入網(wǎng)頁中的CEnvi的版本。這些早期的試驗(yàn)稱為Esp

44、ressoPage(濃咖啡般的頁面),它們代表了第一個(gè)在萬維網(wǎng)上使用的客戶端腳本語言。而Nombas絲毫沒有料到它的理念將會(huì)成為因特網(wǎng)的一塊重要基石。當(dāng)網(wǎng)上沖浪越來越流行時(shí),對(duì)于開發(fā)客戶端腳本的需求也逐漸增大。此時(shí),大部分因特網(wǎng)用戶還僅僅通過28.8kbit/s的調(diào)制解調(diào)器來連接到網(wǎng)絡(luò),即便這時(shí)網(wǎng)頁已經(jīng)不斷地變得更大和更復(fù)雜。而更加加劇用戶痛苦的是,僅僅為了簡(jiǎn)單的表單有效性驗(yàn)證,就要與服務(wù)器端進(jìn)行多次的往返交互。設(shè)想一下,用戶填完一個(gè)表單,點(diǎn)擊提交按鈕,等待了30秒鐘的處理后,看到的卻是一條告訴你忘記填寫一個(gè)必要的字段。那時(shí)正處于技術(shù)革新最前沿的Netscape,開始認(rèn)真考慮一種開發(fā)客戶端腳本

45、語言來解決簡(jiǎn)單的處理問題。當(dāng)時(shí)工作于Netscape的BrendanEich,開始著手為即將在1995年發(fā)行的NetscapeNavigator2.0開發(fā)一個(gè)稱之為L(zhǎng)iveScript的腳本語言,當(dāng)時(shí)的目的是同時(shí)在瀏覽器和服務(wù)器(本來要叫它LiveWire的)端使用它。Netscape與Sun公司聯(lián)手及時(shí)完成LiveScript實(shí)現(xiàn)。就在NetscapeNavigator2.0即將正式發(fā)布前,Netscape將其更名為JavaScript,目的是為了利用Java這個(gè)因特網(wǎng)時(shí)髦詞匯。Netspace的賭注最終得到回報(bào),JavaScript從此變成了因特網(wǎng)的必備組件。因?yàn)镴avaScript1.0

46、如此成功,Netscape在NetscapeNavigator3.0中發(fā)布了1.1版。恰巧那個(gè)時(shí)候,微軟決定進(jìn)軍瀏覽器,發(fā)布了IE3.0并搭載了一個(gè)JavaScript的克隆版,叫做JScript(這樣命名是為了避免與Netscape潛在的許可糾紛)。微軟步入Web瀏覽器領(lǐng)域的這重要一步雖然令其聲名狼藉,但也成為JavaScript語言發(fā)展過程中的重要一步。在微軟進(jìn)入后,有3種不同的JavaScript版本同時(shí)存在:NetscapeNavigator3.0中的Java-Script、IE中的JScript以及CEnvi中的ScriptEase。與C和其他編程語言不同的是,JavaScript并

47、沒有一個(gè)標(biāo)準(zhǔn)來統(tǒng)一其語法或特性,而這3種不同的版本恰恰突出了這個(gè)問題。隨著業(yè)界擔(dān)心的增加,這個(gè)語言標(biāo)準(zhǔn)化顯然已經(jīng)勢(shì)在必行。1997年,JavaScript1.1作為一個(gè)草案提交給歐洲計(jì)算機(jī)制造商協(xié)會(huì)(ECMA)。第39技術(shù)委員會(huì)(TC39)被委派來“標(biāo)準(zhǔn)化一個(gè)通用、跨平臺(tái)、中立于廠商的腳本語言的語法和語義”(/memento/TC39.htm)。由來自Netscape、Sun、微軟、Borland和其他一些對(duì)腳本編程感興趣的公司的程序員組成的TC39錘煉出了ECMA-262,該標(biāo)準(zhǔn)定義了叫做ECMAScript的全新腳本語言。在接下來的幾年里,國(guó)際標(biāo)準(zhǔn)化組織及國(guó)際電工委員會(huì)(ISO/IEC)也

48、采納ECMAScript作為標(biāo)準(zhǔn)(ISO/IEC-16262)。從此,Web瀏覽器就開始努力(雖然有著不同程度的成功和失敗)將ECMAScript作為JavaScript實(shí)現(xiàn)的基礎(chǔ)。HYPERLINK/bookfiles/110/1001103159.shtml上一頁HYPERLINK/bookfiles/110/index.html首頁HYPERLINK/bookfiles/110/1001103355.shtml下一頁盡管ECMAScript是一個(gè)重要的標(biāo)準(zhǔn),但它并不是JavaScript唯一的部分,當(dāng)然,也不是唯一被標(biāo)準(zhǔn)化的部分。實(shí)際上,一個(gè)完整的JavaScript實(shí)現(xiàn)是由以下3個(gè)不同

49、部分組成的(見圖1-1):核心(ECMAScript);文檔對(duì)象模型(DOM);瀏覽器對(duì)象模型(BOM)。圖1-11.2.1ECMAScriptECMAScript并不與任何具體瀏覽器相綁定,實(shí)際上,它也沒有提到用于任何用戶輸入輸出的方法(這點(diǎn)與C這類語言不同,它需要依賴外部的庫來完成這類任務(wù))。那么什么才是ECMAScript呢?ECMA-262標(biāo)準(zhǔn)(第2段)的描述如下:“ECMAScript可以為不同種類的宿主環(huán)境提供核心的腳本編程能力,因此核心的腳本語言是與任何特定的宿主環(huán)境分開進(jìn)行規(guī)定的”Web瀏覽器對(duì)于ECMAScript來說是一個(gè)宿主環(huán)境,但它并不是唯一的宿主環(huán)境。事實(shí)上,還有不計(jì)

50、其數(shù)的其他各種環(huán)境(例如Nombas的ScriptEase和Macromedia同時(shí)用在Flash與DirectorMX中的ActionScript)可以容納ECMAScript實(shí)現(xiàn)。那么ECMAScript在瀏覽器之外規(guī)定了些什么呢?簡(jiǎn)單地說,ECMAScript描述了以下內(nèi)容:語法;類型;語句;關(guān)鍵字;保留字;運(yùn)算符;對(duì)象。ECMAScript僅僅是一個(gè)描述,定義了腳本語言的所有屬性、方法和對(duì)象。其他的語言可以實(shí)現(xiàn)ECMAScript來作為功能的基準(zhǔn),JavaScript就是這樣(見圖1-2)。圖1-2每個(gè)瀏覽器都有它自己的ECMAScript接口的實(shí)現(xiàn),然后這個(gè)實(shí)現(xiàn)又被擴(kuò)展,包含了DOM

51、和BOM(在以下幾節(jié)中再討論)。當(dāng)然還有其他實(shí)現(xiàn)并擴(kuò)展了ECMAScript的語言,例如Windows腳本宿主(WindowsScriptingHost,WSH)、Macromedia的Flash與DirectorMX中的ActionScript,以及NombasScriptEase。1ECMAScript的版本ECMAScript分成幾個(gè)不同的版本,它是在一個(gè)叫做ECMA-262的標(biāo)準(zhǔn)中定義的。和其他標(biāo)準(zhǔn)一樣,ECMA-262會(huì)被編輯和更新。當(dāng)有了主要更新時(shí),就會(huì)發(fā)布一個(gè)標(biāo)準(zhǔn)的新版。最新ECMA-262的版本是第三版,于1999年12月發(fā)布。ECMA-262的第一個(gè)版在根本上是和Netsca

52、pe的JavaScript1.1一樣的,只是把所有與瀏覽器相關(guān)的代碼刪除了,不過有一些小的調(diào)整。首先,ECMA-262要求對(duì)Unicode標(biāo)準(zhǔn)的支持(以便支持多語言)。第二,它要求對(duì)象是平臺(tái)無關(guān)的(Netscape的JavaScript1.1事實(shí)上有不同的對(duì)象實(shí)現(xiàn),例如Date對(duì)象,是依賴于平臺(tái)的)。這也是JavaScript1.1和1.2為什么不符合ECMA-262規(guī)范第一版的主要原因。ECMA-262的第二版大部分更新本質(zhì)上是編輯性的。這次標(biāo)準(zhǔn)的更新是為了與ISO/IEC-16262的嚴(yán)格一致,也并沒有特別添加、更改和刪除內(nèi)容。ECMAScript實(shí)現(xiàn)一般不會(huì)遵守第二版。EMCA-262第

53、三版是該標(biāo)準(zhǔn)第一次真正的更新。它提供了對(duì)字符串處理、錯(cuò)誤定義和數(shù)值輸出的更新。同時(shí),它還增加了正則表達(dá)式、新的控制語句、try.catch異常處理的支持,以及一些為使標(biāo)準(zhǔn)國(guó)際化而做的小改動(dòng)。一般來說,它標(biāo)志著ECMAScript成為一種真正的編程語言的到來。2何謂ECMAScript符合性在ECMA-262中,ECMAScript符合性(conformance)有明確的定義。一個(gè)腳本語言必須滿足以下四項(xiàng)基本原則:符合的實(shí)現(xiàn)必須按照ECMA-262中所描述的支持所有的“類型、值、對(duì)象、屬性、函數(shù)和程序語法及語義”(ECMA-262,第1頁);符合的實(shí)現(xiàn)必須支持Unicode字符標(biāo)準(zhǔn)(UCS);符

54、合的實(shí)現(xiàn)可以增加沒有在ECMA-262中指定的“額外的類型、值、對(duì)象、屬性和函數(shù)”。ECMA-262將這些增加描述為規(guī)范中未給定的新對(duì)象或?qū)ο蟮男聦傩?;符合的?shí)現(xiàn)可以支持沒有在ECMA-262中定義的“程序和正則表達(dá)式語法”(意思是可以替換或者擴(kuò)展內(nèi)建的正則表達(dá)式支持)。所有的ECMAScript實(shí)現(xiàn)必須符合以上標(biāo)準(zhǔn)。3Web瀏覽器中的ECMAScript支持含有JavaScript1.1的NetscapeNavigator3.0在1996年發(fā)布。然后,JavaScript1.1規(guī)范被作為一個(gè)新標(biāo)準(zhǔn)的草案提交給ECMA。有了JavaScript轟動(dòng)性的流行,Netscape十分高興地開始開發(fā)1

55、.2版。但有一個(gè)問題:ECMA并未接受Netscape的草案。在NetscapeNavigator3.0發(fā)布后不久,微軟就發(fā)布了IE3.0。該版本的IE含有JScript1.0(微軟自己的JavaScript實(shí)現(xiàn)的名稱),原本計(jì)劃可以與JavaScript1.1相提并論。然而,由于文檔不全以及一些不當(dāng)?shù)闹貜?fù)特性,JScript1.0遠(yuǎn)遠(yuǎn)沒有達(dá)到JavaScript1.1的水平。在ECMA-262第一版定稿之前,發(fā)布含有JavaScript1.2的NetscapeNavigator4.0是在1997年,在那年晚些時(shí)候,ECMA-262標(biāo)準(zhǔn)被接受并標(biāo)準(zhǔn)化。因此,JavaScript1.2并不和EC

56、MAScript的第一版兼容,雖然ECMAScript應(yīng)該基于JavaScript1.1。JScript的下一步升級(jí)是IE4.0中加入的JScript3.0(2.0版是隨微軟的IIS3.0一起發(fā)布的,但并未包含在瀏覽器中)微軟大力宣傳JScript3.0是世界上第一個(gè)真正符合ECMA標(biāo)準(zhǔn)的腳本語言。而那時(shí),ECMA-262還并沒有最終定稿,所以JScript3.0也遭受了和JavaScript1.2同樣的命運(yùn)它還是沒能符合最終的ECMAScript標(biāo)準(zhǔn)。Netscape選擇在NetscapeNavigator4.06中升級(jí)它的JavaScript實(shí)現(xiàn)。JavaScript1.3使Netscap

57、e終于完全符合了ECMAScript第一版。Netscape加入了對(duì)Unicode標(biāo)準(zhǔn)的支持,并讓所有的對(duì)象保留了在JavaScript1.2中引入的新特性的同時(shí)實(shí)現(xiàn)了平臺(tái)獨(dú)立。當(dāng)Netscape將它的源代碼作為Mozilla項(xiàng)目公布于眾時(shí),本來計(jì)劃JavaScript1.4將會(huì)嵌入到NetscapeNavigator5.0中。然而,一個(gè)冒進(jìn)的決定要完全從頭重新設(shè)計(jì)Netscape的代碼,破壞了這個(gè)工作。JavaScript1.4僅僅作為一個(gè)NetscapeEnterpriseServer的服務(wù)器端腳本語言發(fā)布,以后也沒有被放入瀏覽器中。如今,所有的主流Web瀏覽器都遵守ECMA-262第三版

58、。下面的表格列出了大部分流行Web瀏覽器中的ECMAScript支持:瀏覽器ECMAScript符合性NetscapeNavigator2.0NetscapeNavigator3.0NetscapeNavigator4.04.05NetscapeNavigator4.064.79Edition1Netscape6.0+(Mozilla0.6.0+)Edition3InternetExplorer3.0InternetExplorer4.0InternetExplorer5.0Edition1InternetExplorer5.5+Edition3Opera6.07.1Edition2Opera

59、7.2+Edition3Safari1.0+/Konqueror2.0+Edition31.2.2DOMDOM(文檔對(duì)象模型)是HTML和XML的應(yīng)用程序接口(API)。DOM將把整個(gè)頁面規(guī)劃成由節(jié)點(diǎn)層級(jí)構(gòu)成的文檔。HTML或XML頁面的每個(gè)部分都是一個(gè)節(jié)點(diǎn)的衍生物。請(qǐng)考慮下面的HTML頁面:這段代碼可以用DOM繪制成一個(gè)節(jié)點(diǎn)層次圖(如圖1-3所示)。圖1-3DOM通過創(chuàng)建樹來表示文檔,從而使開發(fā)者對(duì)文檔的內(nèi)容和結(jié)構(gòu)具有空前的控制力。用DOMAPI可以輕松地刪除、添加和替換節(jié)點(diǎn)。1為什么DOM必不可少自從IE4.0和NetscapeNavigator4.0開始支持不同形式的動(dòng)態(tài)HTML(DHT

60、ML),開發(fā)者首次能夠在不重載網(wǎng)頁的情況下修改它的外觀和內(nèi)容。這是Web技術(shù)的一大飛躍,不過也帶來了巨大的問題。Netscape和微軟各自開發(fā)自己的DHTML,從而結(jié)束了Web開發(fā)者只編寫一個(gè)HTML頁面就可以在所有瀏覽器中訪問的時(shí)期。業(yè)界決定必須要做點(diǎn)什么以保持Web的跨平臺(tái)特性,他們擔(dān)心如果放任Netscape和微軟公司這樣做,Web必將分化為兩個(gè)獨(dú)立的部分,每一部分只適用于特定的瀏覽器。因此,負(fù)責(zé)制定Web通信標(biāo)準(zhǔn)的團(tuán)體W3C(WorldWideWebConsortium)就開始制定DOM。2DOM的各個(gè)LevelDOMLevel1是W3C于1998年10月提出的。它由兩個(gè)模塊構(gòu)成,即D

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論