課件javas高級編程非JavaScript_第1頁
課件javas高級編程非JavaScript_第2頁
課件javas高級編程非JavaScript_第3頁
課件javas高級編程非JavaScript_第4頁
課件javas高級編程非JavaScript_第5頁
已閱讀5頁,還剩290頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第 1 章JavaScript 語言概述JavaScript 是目前 Web 應(yīng)用程序開發(fā)者使用最為廣泛的客戶端編程語言,它不僅可用來開發(fā)交互式的 Web 頁面,更重要的是它將 HTML、XML 和 Java applet、flash 等功能強大的 Web 對象有機結(jié)合起來,使開發(fā)能快捷生成 Internet 或 Intranet 上使用的分布式應(yīng)用程序。另外由于 Windows 對其最為完善的支持并提供二次開發(fā)的接口來操作系統(tǒng)各組件并實施相應(yīng)的管理功能,JavaScript 成為繼.bat(批處理文件)以來 Windows 系統(tǒng)里使用最為廣泛的語言。1.1JavaScript 是什么應(yīng)用程序

2、開發(fā)者在學(xué)習(xí)一門新語言之前,肯定聚焦在諸如“它是什么”、“它能做什么”等問題而不是“如何開發(fā)”等問題上面。同樣,學(xué)習(xí) JavaScript的面紗:“JavaScript 是什么?”,首先來揭開 JavaScript1.1.1JavaScript 簡史二十世紀(jì) 90 年代中期,大部分因特網(wǎng)用戶使用 28.8kbit/s 的Modem 連接到網(wǎng)絡(luò)進行網(wǎng)上沖浪,為解決網(wǎng)頁功能簡單的問題,HTML 文檔已經(jīng)變得越來越復(fù)雜和龐大,更讓用戶痛苦的是,為驗證一個表單的有效性,客戶端必須與服務(wù)器端進行多次的數(shù)據(jù)交互。難以想象這樣的情景:當(dāng)用戶填完表單單擊鼠標(biāo)提交后,經(jīng)過漫長的幾十秒等待,服務(wù)器端返回的不是“提

3、交”的喜悅卻是“某某字段必須為數(shù)字,請單擊按鈕返回上一頁面重新填寫表單!”的錯誤提示!當(dāng)時業(yè)界已經(jīng)開始考慮開發(fā)一種客戶端語言來處理諸如驗證表單等簡單而實用的問題。1995 年 Netscape 公司和 Sun 公司開發(fā)出 JavaScript語言,并在其 NetscapeNavigator 2 中實現(xiàn)了 JavaScript規(guī)范的第一個版本即 JavaScript 1.0 版,就顯示了其強大的生機和發(fā)展?jié)摿?。由于?dāng)時 Netscape Navigator 主宰著 Web 瀏覽器市場,而 Microsoft的 IE 則扮演追趕者的,為了跟上 Netscape 步伐,Microsoft 在其 In

4、ternet Explorer 3 中以JScript 為名發(fā)布了一個 JavaScript 的克隆版本 JScript 1.0。1997 年,為了避免無序競爭,同時解決 JavaScript 幾個版本語法、特性等方面的,JavaScript 1.1 作為草案提交給 ECMA(歐洲計算機廠商),并由 Netscape、Sun、Microsoft、Borland 及其它一些對語言比較感的公司組成的 TC39(第 39 技術(shù)委員會:以下簡稱 TC39)協(xié)商并推出了 ECMA-262 規(guī)范版本,其定義了以 JavaScript 為藍(lán)本、全新的ECMAScript語言。ECMA-262 標(biāo)準(zhǔn) Edit

5、ion 1 刪除了 JavaScript 1.1 中與瀏覽器相關(guān)的部分,同時要求對象是平臺無關(guān)的并且支持 Unicode 標(biāo)準(zhǔn)。在接下來的幾年,ISO/IEC(估計標(biāo)準(zhǔn)化組織/國際電工委員會)采納 ECMAScript 作為Web語言標(biāo)準(zhǔn)(ISO/IEC-16262)。從此,ECMAScript 作為 JavaScript的基礎(chǔ)開始得到越來越多的瀏覽器廠商在不同程度上支持。為了與ISO/IEC-16262 標(biāo)準(zhǔn)嚴(yán)格一致,ECMA-262 標(biāo)準(zhǔn)發(fā)布Edition2,此版本并沒有添加、更改和刪除內(nèi)容。ECMA-262 標(biāo)準(zhǔn)Edition 3 提供了對字符串處理、錯誤定義和數(shù)值輸出等方面的更新,同時

6、增加了對trycatch異常處理、正則表達式、新的持,它標(biāo)志著ECMAScript成為一門真正的編程語言,以ECMAScript為語句等方面的完美支的JavaScript語言得到了迅猛的發(fā)展。ECMA-262 標(biāo)準(zhǔn)Edition 4 正在制定過程中,可能明確的類的定義方法和命名空間等概念。表 1.1 是ECMA-262 標(biāo)準(zhǔn)四個版本之間的異同及瀏覽器支持情況。表 1.1 ECMA-262 標(biāo)準(zhǔn)各版本間異同及瀏覽器支持情況1999 年 6 月ECMA 發(fā)布 ECMA-290 標(biāo)準(zhǔn),其主要添加用 ECMAScript 來開發(fā)可復(fù)用組件的內(nèi)容。2005 年 12 月 ECMA 發(fā)布 ECMA-357

7、 標(biāo)準(zhǔn)(ISO/IEC 22537)出臺,主要增加對擴展標(biāo)記語言 XML 的有效支持。對 JavaScript 歷史的了解有助于開發(fā)者迅速掌握這門語言,同時也能加深對 JavaScript語言潛力的理解。下面介紹其語言特點。1.1.2JavaScript 有何特點JavaScript 是一種基于對象和驅(qū)動并具有相對安全性的客戶端語言,主要用于創(chuàng)建具有交互性較強的動態(tài)頁面。主要具有如下特點:z基于對象:JavaScript 是基于對象的編程語言,能通過 DOM(文檔結(jié)構(gòu)模型)及自身提供的對象及操作方法來實現(xiàn)所需的功能。z驅(qū)動:JavaScript 采用驅(qū)動方式,能響應(yīng)鍵盤、鼠標(biāo)及瀏覽器窗口等,并

8、執(zhí)行指定的操作。z解釋性語言:JavaScript 是一種解釋性語言,無需專門編譯器編譯,而是在嵌入 JavaScript的 HTML 文檔載入時被瀏覽器逐行地解釋,大量節(jié)省客戶端與服務(wù)器端進行數(shù)據(jù)交互的時間。z實時性:JavaScript處理是實時的,無須經(jīng)服務(wù)器就可以直接對客戶端的做出響應(yīng),并用處理結(jié)果實時更新目標(biāo)頁面。動態(tài)性:JavaScript 提供簡單高效的語言流程,靈活處理對象的各種方法和屬性, 同時及時響應(yīng)文檔頁面,實現(xiàn)頁面的交互性和動態(tài)性。zz跨平臺:JavaScript的正確運行依賴于瀏覽器,而與具體的操作系統(tǒng)無關(guān)。只要客戶端裝有支持 JavaScript映在客戶端瀏覽器平臺

9、上。的瀏覽器,JavaScript運行結(jié)果就能正確反z開發(fā)使用簡單:JavaScript 基本結(jié)構(gòu)類似 C 語言,采用小程序段的方式編程,并提供了簡易的開發(fā)平臺和便捷的開發(fā)流程,就可以嵌入到 HTML 文檔中供瀏覽器解釋執(zhí)行。同時 JavaScript 的變量類型是弱類型,使用不嚴(yán)格。注意:JavaScript也能進行服務(wù)器端應(yīng)用程序的開發(fā),但相對于客戶端的功能和應(yīng)用范圍而言,一般仍將其作為一門客戶端語言對待,后面有專門章節(jié)講述服務(wù)器端JavaScript。ECMA版本特性瀏覽器支持Edition 1刪除了JavaScript 1.1中與瀏覽器相關(guān)的部分,同時要求對象是平臺無關(guān)的并且支持Uni

10、code標(biāo)準(zhǔn)Netscape Navigators 4(.06版)、Internet Explorer 5Edition 2提供與ISO/IEC-16262標(biāo)準(zhǔn)的嚴(yán)格一致Opera 6.0-7.1Edition 3提供了對字符串處理、錯誤定義和數(shù)值輸出等方面的更新,同時增加了對trycatch異常處理、正則表達式、新的 語句等方面的完美支持Internet Explorer 5.5+、Netscape Navigators 6.0+、Opera 7.2+、Safari 1.0+Edition 4*可能明確的類的定義方法和命名空間等概念未知(此版本正在制訂過程中)z相對安全性:JavaScrip

11、t 是客戶端,通過瀏覽器解釋執(zhí)行。它不本地的硬盤,并且不能將數(shù)據(jù)存入到服務(wù)器上,不對網(wǎng)絡(luò)文檔進行修改和刪除,只能通過瀏覽器實現(xiàn)信息瀏覽或動態(tài)交互,從而有效地防止數(shù)據(jù)的丟失。綜上所述,JavaScript 是一種有較強生命力和發(fā)展?jié)摿Φ那度氲?HTML 文檔中,供瀏覽器解釋執(zhí)行,直接響應(yīng)客戶端描述語言,它可以被直接如驗證數(shù)據(jù)表單,并調(diào)用相應(yīng)的處理方法,迅速返回處理結(jié)果并更新頁面,實現(xiàn) Web 交互性和動態(tài)的要求,同時將大部分的工作交給客戶端處理,將 Web 服務(wù)器的消耗降到最低。1.1.3JavaScript 能做什么JavaScript語言由于其效率高、功能強大等特點,在表單數(shù)據(jù)驗證、網(wǎng)頁特效

12、、交互式菜單、動態(tài)頁面、數(shù)值計算等方面獲得廣泛的應(yīng)用,甚至出現(xiàn)了完全使用 JavaScript編寫的基于 Web 瀏覽器的類 Unix 操作系統(tǒng) JS/UIX 和無需安裝即可使用的中文輸入法程序JustInput,可見 JavaScript編程能力不容小覷!下面僅介紹 JavaScript 常用功能。1表單數(shù)據(jù)使用 JavaScript驗證語言能有效驗證客戶端提交的表單上數(shù)據(jù)的,如數(shù)據(jù)合法則執(zhí)行下一步操作,否則返回錯誤提示信息,如圖 1.1 所示。圖 1.1 應(yīng)用之一:表單數(shù)據(jù)驗證2網(wǎng)頁特效使用 JavaScript語言,結(jié)合 DOM 和 CSS 能創(chuàng)建絢麗多彩的網(wǎng)頁特效,如火焰狀閃爍文字、文

13、字環(huán)繞光標(biāo)旋轉(zhuǎn)等。火焰狀閃爍文字效果如圖 1.2 所示。注意:JS/UIX(系統(tǒng)測試:masswerk.at/jsuix/,命令手冊:masswerk.at/ jsuix/man.txt, 說明文檔 :masswerk.at/jsuix/jsuix-documentation.txt ); JustInput ()注意:之所以說相對安全性,是因為 JavaScript 代碼嵌入到 HTML 頁面中,在客戶端瀏覽該頁面過程中, 瀏覽器自動解釋執(zhí)行該代碼,且不需要用戶的任何操作,給用戶帶來額外的執(zhí)行代碼的風(fēng)險。圖 1.2 應(yīng)用之二:火焰狀閃爍文字特效3交互式菜單使用 JavaScript可以創(chuàng)建具

14、有動態(tài)效果的交互式菜單,完全可以與 falsh 制作的頁面導(dǎo)航菜單相媲美。如圖 1.3 所示,鼠標(biāo)在文檔內(nèi)任何位置單擊,在其周圍出現(xiàn)如下圖所示的導(dǎo)航菜單。圖 1.3 應(yīng)用之三:動態(tài)的交互式菜單4動態(tài)頁面使用JavaScript可以對Web 頁面的所有元素對象進行并使用對象的方法并修改其屬性實現(xiàn)動態(tài)頁面效果,其典型應(yīng)用如網(wǎng)頁版俄羅斯方塊、牌等。如圖 1.4所示為網(wǎng)頁版俄羅斯方塊。圖 1.4 應(yīng)用之四:使用JavaScript的網(wǎng)頁版俄羅斯方塊5數(shù)值計算JavaScript將數(shù)據(jù)類型作為對象,并提供豐富的操作方法使得 JavaScript 用于數(shù)值計算。如圖 1.5 所示為用 JavaScript

15、編寫的計算器。圖 1.5 應(yīng)用之五:使用JavaScript編寫的網(wǎng)頁版計算器JavaScript的應(yīng)用遠(yuǎn)非如此,Web 應(yīng)用程序開發(fā)者能將其與 XML 有機結(jié)合,并嵌入 Java applet 和 flash 等小插件,就能實現(xiàn)功能強大并集可視性、動態(tài)性和交互性于一體的HTML 網(wǎng)頁,吸引的客戶來瀏覽該。使用 DOM 所定義的文檔結(jié)構(gòu),JavaScript 可用于多框架的 HTML 頁面中框架之間的數(shù)據(jù)交互。同時 Windows 提供給 JavaScript 特有的二次編程接口,客戶端可以通過編寫非常短小的 JavaScript文件(.js 格式),通過內(nèi)嵌的解釋執(zhí)行平臺 WSH(Windo

16、ws Script Host:Windows宿主,以下簡稱 WSH)解釋來實現(xiàn)高效的文件系統(tǒng)管理。注意:1、任何一種語言都是偉大的,都可以做很多事情,包括很不可思議的事情,但有一些是有意義1.1.4JavaScript 的未來如何自 ECMA-262 標(biāo)準(zhǔn)以來,JavaScript 及其派生語言如 Flash MX 中的 ActionScript、微軟的JScript 等在很多不同的編程環(huán)境中得到了大量的應(yīng)用,同時TC39 一直積極促進JavaScript 新標(biāo)準(zhǔn)的出臺。2005 年 12 月 ECMAScript for XML (E4X) Specification 作為 ECMA-357

17、 標(biāo)準(zhǔn)(ISO/IEC 22537)出臺,主要增加對擴展標(biāo)記語言 XML 的有效支持:z在 ECMAScript 中定義了 XML 的語法和語義,同時將 XML 的數(shù)據(jù)類型添加進ECMAScript 類型庫中;專門為 XML 擴展、修訂和增加了少數(shù)操作符(operators),如搜索(searching)、過濾(filtering)等,同時增加對 XML 名字空間(namespaces)等的支持。zECMA-357 標(biāo)準(zhǔn)是 JavaScript 發(fā)展史上的點,顯示出對傳統(tǒng) ECMAScript 從根本上的改變,采用一種操作簡單而功能強大的方式來支持 XML。ECMAScript 4 作為下一個

18、事實版本(在 IE 7 和Mozilla 上已部分實現(xiàn)其功能),已作為提案最先由 Netscape 提出,接著 Microsoft 也將的修改意見提交給 TC39。由于 TC39 各成員的觀點存在較大的,主要是不能很好統(tǒng)一有關(guān) JavaScript 未來發(fā)展方向的意見,該標(biāo)準(zhǔn)到本書截稿時還未獲通過。從 IE 5.5 版本發(fā)布開始,Microsoft 就沒有更新過它基于瀏覽器的 JavaScript 實現(xiàn)策略, 但在.NET Framework 中包含了 JScript.NET 作為 ECMAScript 4 的實現(xiàn),它不能被瀏覽器解釋執(zhí)行,而只能通過特有編譯器編譯后作為的應(yīng)用程序來使用。令人意

19、想不到的是,一直特立獨行的蘋果(Apple)電腦在其操作系統(tǒng) MacOS X Tiger版本中支持名為 DashBoard 的新型開發(fā)平臺,它使用 JavaScript并能在 MacOS 桌面環(huán)境中運行。來創(chuàng)建輕量級應(yīng)用程序,JavaScript 作為一門語言依然在發(fā)展,雖然發(fā)展方向不太確定,其逐漸走出 Web 世界進入桌面應(yīng)用領(lǐng)域也只是一種可能,但可以肯定的是,迎接 JavaScript好的前景。語言的將是十分美1.2JavaScript 編程起步JavaScript已經(jīng)成為 Web 應(yīng)用程序開發(fā)的一門炙手可熱的語言,成為客戶端的首選。網(wǎng)絡(luò)上充斥著形態(tài)各異的 JavaScript實現(xiàn)不同的功

20、能,但用戶也許并不了解JavaScript的 JavaScript是如何被瀏覽器中解釋執(zhí)行,更不知如何開始編寫來實現(xiàn)想要實現(xiàn)的效果。本節(jié)將一步步帶領(lǐng)讀者踏入 JavaScript語言編程的大門。1.2.1“Hello World!”程序像學(xué)習(xí) C、Java 等其他語言一樣,先來看看使用 JavaScriptWorld!”程序:語言編寫的 “Hello注意:有關(guān)ECMAScript for XML (E4X) Specification(即ECMA-357 標(biāo)準(zhǔn))的具體內(nèi)容請參見其文檔:的,另一些是沒有意義的,只是語言的側(cè)重點不同而已。將上述代碼保存為.html(或.html)文件并雙擊打開,系

21、統(tǒng)調(diào)用默認(rèn)瀏覽器解釋執(zhí)行,結(jié)果如圖 1.6 所示。圖 1.6 JavaScript 編寫的“Hello World!”程序JavaScript編程一般分為如下步驟:zzzzz選擇 JavaScript 語言編輯器編輯代碼;嵌入該 JavaScript代碼到 HTML 文檔中;選擇支持 JavaScript 的瀏覽器瀏覽該 HTML 文檔;如果錯誤則檢查并修正源代碼,重新瀏覽,此過程重復(fù)直至代碼正確為止;處理不支持 JavaScript的情況。由于JavaScript代碼是嵌入到HTML 文檔中被瀏覽器解釋執(zhí)行,所以開發(fā)JavaScript代碼并不需要特殊的編程環(huán)境,只需要普通的文本編輯器和支持

22、 JavaScript的瀏覽器即可。那么如何選擇 JavaScript編輯器呢?1.2.2選擇JavaScript編輯器編寫 JavaScript代碼可以選擇普通的文本編輯器,如 Windows Notepad、UltraEdit等,只要所選編輯器能將所編輯的代碼最終保存為 HTML 文檔類型(.htm、.html 等)即可。雖然 Dreamweaver、Microsoft FrontPage 等專業(yè)網(wǎng)頁開發(fā)工具套件內(nèi)部集成了 JavaScript/源程序 1.1<! DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.0/EN" "

23、"><html><head><meta http-equiv=content-type content="text/html; charset=gb2312"><title>Sample Page!</title></head><body><br><center><script language="javascript 1.2" type="text/javascript"> document.wri

24、te("Hello World!");</script></center></body></html>的開發(fā)環(huán)境,但筆者依然建議 JavaScript程序開發(fā)者在起步階段使用最基本的文本編輯器如 NotePad、UltraEdit 等進行開發(fā),以便把注意力放在 JavaScript發(fā)環(huán)境上。語言而不是開同時,如果代碼出現(xiàn)錯誤,可用該編輯器打開源文件(.html、.html 或.js)修改后保存,并重新使用瀏覽器瀏覽,重復(fù)此過程直到?jīng)]有錯誤出現(xiàn)為止。1.2.3引入JavaScript代碼到HTML 文檔中將 JavaScript

25、嵌入到 HTML 文檔中有 4 種標(biāo)準(zhǔn)方法:zzzz代碼包含于<script>和</script>標(biāo)記對,然后嵌入到 HTML 文檔中;通過<script>標(biāo)記的 src 屬性外部的 JavaScript文件;通過 JavaScript 偽 URL 地址引入;通過 HTML 文檔處理程序引入。下面分別介紹 JavaScript的幾種標(biāo)準(zhǔn)引入方法:1通過<script>與</script>標(biāo)記對引入在源程序 1.1 的代碼中除了<script>與</script>標(biāo)記對之間的內(nèi)容外,都是最基本的HTML 代碼,可

26、見<script>和</script>標(biāo)記對將 JavaScript檔中:代碼封裝并嵌入到 HTML 文 document.write("Hello World!");瀏覽器載入嵌有 JavaScript的 HTML 文檔時,能自動識別 JavaScript代碼起始標(biāo)記<script>和結(jié)束標(biāo)記</script>,并將其間的代碼按照解釋 JavaScript解釋,然后將解釋結(jié)果返回 HTML 文檔并在瀏覽器窗口顯示。代碼的方法加以來看看下面的代碼:首先,<script>和</script>標(biāo)記對將 Ja

27、vaScript代碼封裝,同時告訴瀏覽器其間的代碼為 JavaScript檔中。代碼,然后調(diào)用 document 文檔對象的 write( )方法寫字符串到 HTML 文下面重點介紹<script>標(biāo)記的幾個屬性:zlanguage 屬性:用于指定封裝代碼的語言及版本,有的瀏覽器還支持 perl、VBScript 等,所有瀏覽器都支持 JavaScript(當(dāng)然,非常老的版本除外),同時language 屬性默認(rèn)值也為 JavaScript;type 屬性:指定<script>和</script>標(biāo)記對之間zz的代碼類型;src 屬性:用于將外部的器中使用,

28、使用 JavaScript文件內(nèi)容嵌入到當(dāng)前文檔中,一般在較新版本的瀏覽編寫的外部文件必須使用.js 為擴展名,同時在<script>和</script>標(biāo)記對中不包含任何內(nèi)容,如下:注意:W3C HTML 標(biāo)準(zhǔn)中不推薦使用language 語法,要標(biāo)記所使用的類型,應(yīng)設(shè)置<script>的 type<script language="JavaScript 1.2" type="text/javascript" src="Sample.js"></script><scr

29、ipt language="javascript 1.2" type="text/javascript"> document.write("Hello World!");</script>注意:所謂標(biāo)記對,就是必須成對出現(xiàn)的標(biāo)記,否則其間的代碼不能被瀏覽器解釋執(zhí)行。注意:.js 為 JavaScript 純代碼文件的保存格式,該格式在通過<script>標(biāo)記的 src 屬性引入JavaScript代碼的方式中使用,用于嵌入外部文件*.js。下面討論<script>標(biāo)記的 src 屬性如何引入

30、JavaScript代碼。2通過<script>標(biāo)記的 src 屬性引入改寫源程序 1.1 的代碼并保存為 test.html:同時在文本編輯器中編輯如下代碼并將其保存為 1.js: document.write("Hello World!");將 test.html 和 1.js 文件放置于同一目錄,雙擊運行 test.html,結(jié)果如圖 1.6 所示??梢娡ㄟ^外部引入 JavaScript文件的方式,能實現(xiàn)同樣的功能。同時具有如下優(yōu)點:z將程序同現(xiàn)有頁面的邏輯結(jié)構(gòu)及瀏覽器結(jié)果分離。通過外部,可以輕易實文件內(nèi)容達到批現(xiàn)多個頁面共用完成同量更新的目的;瀏覽器可以

31、實現(xiàn)對目標(biāo)能的文件,以便通過更新一個z文件的高速緩存,避免額外的由于同樣功能的代碼而導(dǎo)致時間的增加。與 C 語言使用外部頭文件(.h 文件等)相似,引入 JavaScript代碼時使用外部文件的方式符合結(jié)構(gòu)化編程思想,但也有不利的一面,主要表現(xiàn)在如下幾點:z不是所有支持 JavaScript的瀏覽器都支持外部,如 Netscape 2 和 InternetExplorer 3 及以下版本都不支持外部。導(dǎo)致的加載時間過長有可能導(dǎo)致頁面z外部文件功能過于復(fù)雜或其他得不到處理或者得不到正確的處理,程序員必須謹(jǐn)慎使用并確保加載完成后其中的函數(shù)才被頁面調(diào)用,否則瀏覽器報錯。綜上所述,引入外部 JavaS

32、cript文件的方法是效果與風(fēng)險并存,開發(fā)者應(yīng)權(quán)衡優(yōu)缺點以決定是將相同的功能。代碼嵌入到目標(biāo) HTML 文檔中還是通過外部文件的方式來實現(xiàn)下面介紹一種短小高效的代碼嵌入方式:偽 URL 引入。3通過 JavaScript 偽 URL 引入在多數(shù)支持 JavaScript的瀏覽器中,可以通過 JavaScript 偽 URL 地址調(diào)用語句來引入 JavaScript代碼。偽 URL 地址的一般格式如下: JavaScript:alert("Hello World!")注意:一般來講,將實現(xiàn)通用功能的 JavaScript 代碼作為外部 文件 ,而實現(xiàn)特有功能的JavaScri

33、pt 代碼則直接嵌入到 HTML 文檔中的<head>與</head>標(biāo)記對之間提前載入以及時、正確響應(yīng)頁面 。/源程序 1.2<! DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.0/EN" ""><html><head><meta http-equiv=content-type content="text/html; charset=gb2312"><title>Sample Page!</title><

34、;/head><body><script language="javascript 1.2" type="text/javascript" src="1.js"></script></body></html>屬性為對應(yīng)的 MIME 類型(JavaScript 的 MIME 類型為“text/javascript”)。但在該屬性中可設(shè)定所使用的版本,有利于根據(jù)瀏覽器支持的版本來編寫有性的代碼。一般以“javascript:”開始,后面緊跟要執(zhí)行的操作。下面的代碼演示如何使

35、用偽 URL地址來引入 JavaScript 代碼:鼠標(biāo)點擊文本框,彈出警示框如圖 1.7 所示。圖 1.7 偽 URL 地址引入JavaScript代碼實例偽 URL 地址可用于文檔中任何地方,并觸發(fā)任意數(shù)量的 JavaScript 函數(shù)或?qū)ο蠊逃械姆椒?。由于這種方式代碼短小精悍,同時效果頗佳,在表單數(shù)據(jù)否符合日期格式等方面應(yīng)用非常廣泛。驗證譬如某個字段是4通過 HTML 文檔處理程序引入在開發(fā) Web 應(yīng)用程序的過程中,開發(fā)者可以給 HTML 文檔中設(shè)定不同的處理器,通常是設(shè)置某 HTML 元素的屬性來一個(可以是一個簡單的動作或者函數(shù)),屬性一般以 on 開頭,如鼠標(biāo)移動 onmouse

36、move( )等。下面的程序演示如何使用 JavaScript對按鈕單擊進行響應(yīng):/源程序 1.4<! DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.0/EN" "">/源程序 1.3<! DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.0/EN" ""><html><head><meta http-equiv=content-type content="text/html; charset=g

37、b2312"><title>Sample Page!</title></head><body><br><center><p>偽 URL 地址引入 JavaScript代碼實例:</p><form name="MyForm"><input type=text name="MyText" value="鼠標(biāo)點擊" onclick="javascript:alert('鼠標(biāo)已點擊文本框!'

38、;)"></form></center></body></html>程序運行后,在原始頁面單擊“鼠標(biāo)單擊”按鈕,出現(xiàn)如圖 1.8 所示的警告框。圖 1.8 通過文檔處理程序引入JavaScript實例遺憾的是,許多版本較低的瀏覽器,不能夠從眾多 HTML 標(biāo)記中識別出處理器,即使支持,支持的程度也不同,對的處理方法差別也很大。但是大部分瀏覽器都能理解HTML 標(biāo)記的,如 onclick、ondbclick、onkeydown、onkeypress、onkeyup、onmousedown、onmousemove、onmouseove

39、r、onmouseout 等鼠標(biāo)和鍵盤觸發(fā)。知道了如何引入 JavaScript位置。代碼,下面介紹在 HTML 中嵌入 JavaScript代碼的1.2.4嵌入JavaScript代碼的位置JavaScript代碼可放在HTML 文檔任何需要的位置。一般來說,可以在<head>與</head>標(biāo)記對、<body>與</body>標(biāo)記對之間按需要放置 JavaScript代碼。<html><head><meta http-equiv=content-type content="text/html; char

40、set=gb2312"><title>Sample Page!</title><script language="javascript" type="text/javascript"> function ClickMe()alert("鼠標(biāo)已單擊按鈕");</script></head><body><br><center><p>通過文檔處理程序引入 JavaScript代碼實例:</p><for

41、m name="MyForm"><input type=button name="MyButton" value="鼠標(biāo)單擊" onclick="ClickMe()"></form></center></body></html>1<head>與</head>標(biāo)記對之間放置放置在<head>與</head>標(biāo)記對之間的 JavaScript代碼一般用于提前載入以響應(yīng)用戶的動作,一般不影響 HTML 文檔的

42、瀏覽器顯示內(nèi)容。如下是其基本文檔結(jié)構(gòu):2<body>與</body>標(biāo)記對之間放置如果需要在頁面載入時運行 JavaScript 與</body>標(biāo)記對之間,可根據(jù)需要編寫多個如下是其基本文檔結(jié)構(gòu):生成網(wǎng)頁內(nèi)容,應(yīng)將代碼放置在<body>的代碼段并與HTML 代碼結(jié)合在一起。3在兩個標(biāo)記對之間混合放置如果既需要提前載入代碼以響應(yīng)用戶的,又需要在頁面載入時使用生成頁面內(nèi)容,可以綜合以上兩種方式。如下是其基本文檔結(jié)構(gòu):/源程序 1.7<! DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.0/EN"

43、 ""><html><head><meta http-equiv=content-type content="text/html; charset=gb2312"><title>文檔標(biāo)題</title><script language="javascript" type="text/javascript">/源程序 1.6<! DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.0/EN"

44、 ""><html><head><meta http-equiv=content-type content="text/html; charset=gb2312"><title>文檔標(biāo)題</title></head><body><script language="javascript" type="text/javascript">/語句</script>/HTML 語句<script langu

45、age="javascript" type="text/javascript">/語句</script></body></html>/源程序 1.5<! DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.0/EN" ""><html><head><meta http-equiv=content-type content="text/html; charset=gb2312"><

46、;title>文檔標(biāo)題</title><script language="javascript" type="text/javascript">/語句</script></head><body></body></html>在 HTML 文檔中何種位置嵌入 JavaScript代碼應(yīng)由其實際功能需求來決定。嵌入腳本的 HTML 文檔編輯完成,下一步選擇合適的瀏覽器。1.2.5選擇合適的瀏覽器JavaScript在客戶端由瀏覽器解釋執(zhí)行并將結(jié)果更新目標(biāo)頁面,由于各瀏覽器

47、廠商對 JavaScript 版本的支持不盡相同,瀏覽器的版本也對 JavaScript的支持有很大影響,所以編寫代碼時一定要考慮合適的瀏覽器之間的兼容性,重點在于編寫符合 JavaScript 標(biāo)準(zhǔn)的代碼以適應(yīng)目標(biāo)瀏覽器。下面是瀏覽器版本與其支持的 JavaScript 版本之間的關(guān)系,如表1.2 所示:表 1.2 瀏覽器版本與其支持的JavaScript版本之間的關(guān)系表在各大瀏覽器廠商中,基于 Mozilla 的瀏覽器(包括 Netscape Navigator 6+)對 JavaScript標(biāo)準(zhǔn)的支持最好,其實現(xiàn)了 JavaScript 1.5 且只修改了其中很少的語言特性。即使 ECM

48、A 出臺 ECMA-262、ECMA-290、ECMA-357 等標(biāo)準(zhǔn)意在消除 JavaScript 各個不同版本之間的差異性,JavaScript 的應(yīng)用依然受到很大的。本書將在后面的章節(jié)中結(jié)合 DOM(文檔結(jié)構(gòu)模型)JavaScript 各種規(guī)范版本之間差異進行重點討論以真正解決代碼的瀏覽器兼容問題。可通過如下的代碼檢查當(dāng)前瀏覽器的版本信息:/源程序 1.8<! DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.0/EN" ""><html><head><meta http-equi

49、v=content-type content="text/html; charset=gb2312"><title>Sample Page!</title><script language="javascript" type="text/javascript"> function PrintVersion()var msg=""瀏覽器版本JavaScript版本Netscape Navigator 2 x1.0Netscape Navigator 3 x1.1Netscap

50、e Navigator 4.0-4.051.2Netscape Navigator 4.06-4.08,4.5x,4.6x,4.7x1.3Netscape Navigator 6.0+1.5Internet Explorer 3.0JScript 1.0Internet Explorer 4.0JScript 3.0Internet Explorer 5.0JScript 5.0Internet Explorer 5.5JScript 5.5Internet Explorer 6.0+JScript 5.6/語句</script></head><body>&

51、lt;script language="javascript" type="text/javascript">/語句</script></body></html>程序運行后,在原始頁面單擊“鼠標(biāo)單擊”按鈕,彈出警告框如圖 1.9 所示。圖 1.9 獲取當(dāng)前瀏覽器的版本信息在確定瀏覽器的版本信息后,可以根據(jù)瀏覽器類型編寫有性的,同時可在其源程序中加入不同瀏覽器版本的代碼,根據(jù)瀏覽器的類型返回相應(yīng)結(jié)果給瀏覽器,從支持程度不同的問題。而克服客戶端瀏覽器對 JavaScript1.2.6處理不支持 JavaScript的

52、情況客戶端瀏覽器不支持當(dāng)前 JavaScript存在如下三種可能:;zz客戶端瀏覽器不支持任何 JavaScript客戶端瀏覽器支持的 JavaScript屬性或方法不同;版本與該代碼使用的版本所支持的對象、z客戶端為了安全起見,已經(jīng)將瀏覽器對 JavaScript的支持設(shè)置為。以上三種情況總結(jié)起來,就是瀏覽器對當(dāng)前不能解釋出正確的結(jié)果,在編寫代碼時如不進行相關(guān)處理,用戶使用該瀏覽器瀏覽帶有該過以下兩種方法解決:的文檔時將出現(xiàn)警告框。可以通msg+="瀏覽器名稱:"+navigator.appName+"n" msg+="瀏覽器版本:"

53、;+navigator.appVersion+"n" msg+="瀏覽器代碼:"+navigator.appCodeName+"n" alert(msg);</script></head><body><br><center><p>鼠標(biāo)單擊按鈕顯示當(dāng)前瀏覽器的版本信息</p><form name="MyForm"><input type=button name="MyButton" value=&

54、quot;鼠標(biāo)單擊" onclick="PrintVersion()"></form></center></body></html>1使用<!-和->標(biāo)記對直接法該方法使用<!-和->標(biāo)記對將 JavaScript 代碼進行封裝,告訴瀏覽器如果它不支持該腳本就直接跳過,如果支持代碼則自動跳過該標(biāo)記對,達到如果瀏覽器不支持代碼則將其隱藏的目的。如下代碼結(jié)構(gòu):2使用<noscript>和</noscript>標(biāo)記對給出提示信息該方法在瀏覽器不支持該代碼或者瀏覽器對Ja

55、vaScript的支持已設(shè)置為的情況下,忽略<script>和</script>標(biāo)記對之間代碼,返回<noscript>和</noscript>標(biāo)記對中預(yù)設(shè)的頁面提示信息;如果支持該代碼則解釋執(zhí)行<script>和</script>標(biāo)記對之間代碼,而忽略<noscript>和</noscript>標(biāo)記對之間預(yù)設(shè)的頁面提示信息。這種方法較之第法更人性化。如下代碼結(jié)構(gòu):目前,客戶端瀏覽器版本很少有不支持 JavaScript的情況,但其禁用 JavaScript 腳本的情況很常見,在編寫代碼的應(yīng)充分考慮

56、不支持 JavaScript編寫策略。的情況并采取相應(yīng)的代碼1.3JavaScript 的實現(xiàn)基礎(chǔ)前面已經(jīng)描述過,ECMAScript 是 JavaScript的基石,但并不是使用 JavaScript開發(fā)過程中應(yīng)唯一特別值得關(guān)注的部分。實際上,一個完整的 JavaScript下三部分:實現(xiàn)應(yīng)包含如zzzECMAScript:為不同的宿主環(huán)境提供的能力;DOM(文檔對象模型):規(guī)定了BOM(瀏覽器對象模型):提供了和方法。HTML 和 XML 的應(yīng)用程序接口;于內(nèi)容而在瀏覽器窗口之間進行交互的對象下面分別介紹這三個部分:1.3.1ECMAScriptECMAScript 規(guī)定了能適應(yīng)于各種宿主

57、環(huán)境的言,ECMA-262 標(biāo)準(zhǔn)描述如下:“ECMAScript 可以為不同種類的宿主環(huán)境提供語則,關(guān)于 ECMAScript 語的編程能力,因此的<script language="javascript" type="text/javascript">/代碼</script><noscript>/提示信息</noscript>注意:上述方法并沒有實現(xiàn) JavaScript代碼的真正隱藏,因為瀏覽器同樣了該,并將其作為源代碼使用,只是在解釋的時候忽略<!-和->標(biāo)記對之間的代碼。<scri

58、pt language="javascript" type="text/javascript"><!-/此處添加代碼-></script>語言是與任何特定的宿主環(huán)境進行規(guī)定的”ECMAScript 并不附屬于任何瀏覽器,事實上,Web 瀏覽器只是其中一種宿主環(huán)境,但并不唯一。在其發(fā)展史上有很多宿主環(huán)境,如 Microsoft 的 WSH、Micromedia 的 ActionScript、Nombas 的 ScriptBase 和 Yahool!的 Widget 引擎等都可以容納 ECMAScript 實現(xiàn)。ECMAScri

59、pt 僅僅是個描述,定義了如下內(nèi)容:語言所有的對象、屬性和方法,其主要描述了zzzzzzz語法數(shù)據(jù)類型關(guān)鍵字 保留字 運算符 對象語句支持 ECMA 標(biāo)準(zhǔn)的瀏覽器都提供容如對象、屬性和方法等。ECMAScript 標(biāo)準(zhǔn)定義了 JavaScript的 ECMAScript接口,并按照需要擴展其內(nèi)中最為的內(nèi)容,是 JavaScript的骨架,有了骨架,就可以在其上進行擴展,典型的擴展如 DOM(文檔對象模型)和 BOM(瀏覽器對象模型)等。1.3.2DOMDOM 定義了 JavaScript 可以進行操作的文檔的各個功能部件的接口,提供個功能部件(如 document、form、textarea

60、等)的途徑以及操作方法。文檔各在瀏覽器載入文檔(HTML 或 XML)時,根據(jù)其支持的 DOM 規(guī)范級別將整個文檔規(guī)劃成由節(jié)點層級的節(jié)點樹,文檔中每個部分都是一個節(jié)點,然后依據(jù)節(jié)點樹層級同時根據(jù)目標(biāo)節(jié)點的某個屬性搜索到目標(biāo)節(jié)點后,調(diào)用節(jié)點的相關(guān)處理方法進行處理,完成處理的整個過程。先看下面簡單的 HTML 代碼:到瀏覽器載入該文檔后,根據(jù) DOM 中定義的結(jié)構(gòu),將其以圖 1.10 所示的節(jié)點樹形式表示出來(灰色表示本本節(jié)點)。/源程序 1.9<! DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.0/EN" ""><html><head><meta htt

溫馨提示

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

評論

0/150

提交評論