大概在1992年,一家稱作Nombas的公司開(kāi)始開(kāi)發(fā)一種叫做C--(C-minus-minus,簡(jiǎn)稱Cmm)的嵌入式腳本語(yǔ)言。 Cmm背后的理念很簡(jiǎn)單:一個(gè)足夠強(qiáng)大可以替代宏操作(macro)的腳本語(yǔ)言,同時(shí)保持與C(和C++)中夠的相似性,以便開(kāi)發(fā)人員能很快學(xué)會(huì)。 這個(gè)腳本語(yǔ)言捆綁在一個(gè)叫做CEnvi的共享軟件產(chǎn)品中,它首次向開(kāi)發(fā)人員展示了這種語(yǔ)言的威力。 Nombas最終把Cmm的名字改成了ScripEase。原因是后面的部分(mm)聽(tīng)起來(lái)過(guò)于“消極”,同時(shí)字母C“令人害怕”。 現(xiàn)在ScriptEase已經(jīng)成為了Nombas產(chǎn)品背后的主要驅(qū)動(dòng)力。 當(dāng)Netscape Navigator嶄露頭角時(shí),Nombas開(kāi)發(fā)了個(gè)可以嵌入網(wǎng)頁(yè)中的CEnvi的版本。 這些早期的試驗(yàn)稱為Espresso Page(濃咖啡般的頁(yè)面),它們代表了每個(gè)在萬(wàn)維網(wǎng)上使用的客戶端腳本語(yǔ)言。 而Nombas絲毫沒(méi)有料到它的理念將會(huì)成為因特網(wǎng)的一塊重要基石。
當(dāng)網(wǎng)上沖浪越來(lái)越流行時(shí),對(duì)于開(kāi)發(fā)客戶端腳本的需求也逐漸增大。此時(shí),大部分因特網(wǎng)用戶還僅僅通過(guò)28.8kbit/s的調(diào)制解調(diào)器來(lái)連接到網(wǎng)絡(luò),即便這時(shí)網(wǎng)頁(yè)已經(jīng)不斷地變得更大和更復(fù)雜。而更加加劇用戶痛苦的是,僅僅為了簡(jiǎn)單的表單有效性驗(yàn)證,就要與服務(wù)器端進(jìn)行多次的往返交互。設(shè)想一下,用戶填完一個(gè)表單,點(diǎn)擊提交按鈕,等待了30秒鐘的處理后,看到的卻是一條告訴你忘記填寫(xiě)一個(gè)必要的字段。那時(shí)正處于技術(shù)革新最前沿的Netscape,開(kāi)始認(rèn)真考慮一種開(kāi)發(fā)客戶端腳本語(yǔ)言來(lái)解決簡(jiǎn)單的處理問(wèn)題。
當(dāng)時(shí)工作于Netscape的Brendan Eich,開(kāi)始著手為即將在1995年發(fā)行的Netscape Navigator 2.0開(kāi)發(fā)一個(gè)稱之為L(zhǎng)iveScript的腳本語(yǔ)言,當(dāng)時(shí)的目的是同時(shí)在瀏覽器和服務(wù)器(本來(lái)要叫它LiveWire的)端使用它。Netscape與Sun公司聯(lián)手及時(shí)完成LiveScript實(shí)現(xiàn)。就在Netscape Navigator 2.0即將正式發(fā)布前,Netscape將其更名為JavaScript,目的是為了利用Java這個(gè)因特網(wǎng)時(shí)髦詞匯。Netspace的賭注最終得到回報(bào),JavaScript從此變成了因特網(wǎng)的必備組件。
因?yàn)镴avaScript 1.0如此成功,Netscape在Netscape Navigator 3.0中發(fā)布了1.1版。恰巧那個(gè)時(shí)候,微軟決定進(jìn)軍瀏覽器,發(fā)布了IE 3.0 并搭載了一個(gè)JavaScript的克隆版,叫做JScript(這樣命名是為了避免與Netscape潛在的許可糾紛)。微軟步入Web瀏覽器領(lǐng)域的這重要一步雖然令其聲名狼藉,但也成為JavaScript語(yǔ)言發(fā)展過(guò)程中的重要一步。
在微軟進(jìn)入后,有3種不同的JavaScript版本同時(shí)存在:Netscape Navigator 3.0中的JavaScript、IE中的JScript以及CEnvi中的ScriptEase。與C和其他編程語(yǔ)言不同的是,JavaScript并沒(méi)有一個(gè)標(biāo)準(zhǔn)來(lái)統(tǒng)一其語(yǔ)法或特性,而這3種不同的版本恰恰突出了這個(gè)問(wèn)題。隨著業(yè)界擔(dān)心的增加,這個(gè)語(yǔ)言標(biāo)準(zhǔn)化顯然已經(jīng)勢(shì)在必行。
1997年,JavaScript 1.1作為一個(gè)草案提交給歐洲計(jì)算機(jī)制造商協(xié)會(huì)(ECMA)。第39技術(shù)委員會(huì)(TC39)被委派來(lái)“標(biāo)準(zhǔn)化一個(gè)通用、跨平臺(tái)、中立于廠商的腳本語(yǔ)言的語(yǔ)法和語(yǔ)義”(http://www.ecma-international.org/memento/TC39.htm)。由來(lái)自Netscape、Sun、微軟、Borland和其他一些對(duì)腳本編程感興趣的公司的程序員組成的TC39錘煉出了ECMA-262,該標(biāo)準(zhǔn)定義了叫做ECMAScript的全新腳本語(yǔ)言。
在接下來(lái)的幾年里,國(guó)際標(biāo)準(zhǔn)化組織及國(guó)際電工委員會(huì)(ISO/IEC)也采納ECMAScript作為標(biāo)準(zhǔn)(ISO/IEC-16262)。從此,Web瀏覽器就開(kāi)始努力(雖然有著不同程度的成功和失?。CMAScript作為JavaScript實(shí)現(xiàn)的基礎(chǔ)。
盡管ECMAScript是一個(gè)重要的標(biāo)準(zhǔn),但它并不是JavaScript唯一的部分,當(dāng)然,也不是唯一被標(biāo)準(zhǔn)化的部分。實(shí)際上,一個(gè)完整的JavaScript實(shí)現(xiàn)是由以下3個(gè)不同部分組成的
ECMAScript、DOM、BOM將是我們之后課程的主要內(nèi)容。
盡管名字中有Java,但是JavaScript和Java幾乎沒(méi)有什么共同點(diǎn)。Java是一種全功能的編程語(yǔ)言,是由Sun公司開(kāi)發(fā)和推廣的。Java是C和C++編程語(yǔ)言之后的又一種主流語(yǔ)言,程序員可以使用它創(chuàng)建完整的應(yīng)用程序和控制消費(fèi)電子設(shè)備。與其他語(yǔ)言不同,Java宣稱具有跨平臺(tái)兼容性;也就是說(shuō),程序員應(yīng)該能夠編寫(xiě)出可以在所有種類的機(jī)器上運(yùn)行的Java程序,無(wú)論機(jī)器運(yùn)行的是Windows、Mac OS X還是任何風(fēng)格的UNIX。但實(shí)際上,Java不總是能夠?qū)崿F(xiàn)這個(gè)夢(mèng)想,因?yàn)镾un和微軟公司在這種語(yǔ)言的發(fā)展方向方面有很大的分歧。微軟公司首先試圖以自己的方式將Java集成到Windows中(Sun認(rèn)為,這種方式使Java在Windows上以一種方式工作,而在其他機(jī)器上以另一種方式工作,從而破壞了Java的跨平臺(tái)兼容性);隨后,微軟公司從Windows中完全去除了Sun的Java,而創(chuàng)建了自己的類Java語(yǔ)言:C#。經(jīng)過(guò)兩公司之間的一輪訴訟之后,Sun占據(jù)了上風(fēng),現(xiàn)在可以在Windows(或Linux)上安裝Sun的最新Java版本(http://www.java.com/getjava/)。Mac OS X操作系統(tǒng)在安裝時(shí)會(huì)附帶Java。
用JavaScript可以做許多事情,使網(wǎng)頁(yè)更具交互性,給站點(diǎn)的用戶提供更好、更令人興奮的體驗(yàn)。JavaScript使你可以創(chuàng)建活躍的用戶界面,當(dāng)用戶在頁(yè)面間導(dǎo)航時(shí)向他們提供反饋。例如,你可能在一些站點(diǎn)上見(jiàn)過(guò)在鼠標(biāo)指針停留時(shí)突出顯示的按鈕。這是用JavaScript實(shí)現(xiàn)的,使用了一種稱為翻轉(zhuǎn)器(rollover)的技術(shù) 可以使用JavaScript確保用戶在表單中輸入有效的信息,這可以節(jié)省你的業(yè)務(wù)時(shí)間和開(kāi)支。如果表單需要進(jìn)行計(jì)算,那么可以在用戶機(jī)器上的JavaScript中完成,而不需要任何服務(wù)器端處理。你應(yīng)該知道一種區(qū)分程序的方式:在用戶機(jī)器上運(yùn)行的程序稱為客戶端(client-side)程序;在服務(wù)器上運(yùn)行的程序(包括后面要討論的CGI)稱為服務(wù)器端(server-side)程序。 可以使用JavaScript根據(jù)用戶的操作即時(shí)創(chuàng)建定制的HTML頁(yè)面。假設(shè)你正在運(yùn)行一個(gè)旅行指南站點(diǎn),用戶點(diǎn)擊夏威夷作為旅游目的地。你可以在一個(gè)新窗口中顯示最新的夏威夷旅游指南。JavaScript可以控制瀏覽器,所以你可以打開(kāi)新窗口、顯示警告框以及在瀏覽器窗口的狀態(tài)欄中顯示定制的消息。JavaScript有一套日期和時(shí)間特性,可以生成時(shí)鐘、日歷和時(shí)間戳文檔。 JavaScript還可以處理表單、設(shè)置cookie、即時(shí)構(gòu)建HTML頁(yè)面以及創(chuàng)建基于Web的應(yīng)用程序。
JavaScript是一種客戶端(client-side)語(yǔ)言;也就是說(shuō),設(shè)計(jì)它的目的是在用戶的機(jī)器上執(zhí)行任務(wù),而不是在服務(wù)器上。因此,JavaScript有一些固有的限制,這些限制主要出于安全原因:
我們的第一個(gè)腳本:最經(jīng)典的HelloWorld程序!
<script type="text/javascript"> document.write("<h2>Hello,JavaScriptWorld!</h2>"); </script>
聯(lián)系客服