JavaScript歷史大概在1992年,一家稱作Nombas的公司開始開發一種叫做C–(C-minus-minus,簡稱Cmm)的嵌入式腳本語言。 Cmm背後的理念很簡單:一個足夠強大可以替代巨集操作(macro)的腳本語言,同時保持與C(和C++)中夠的相似性,以便開發人員能很快學會。 這個腳本語 ...
JavaScript歷史
大概在1992年,一家稱作Nombas的公司開始開發一種叫做C–(C-minus-minus,簡稱Cmm)的嵌入式腳本語言。 Cmm背後的理念很簡單:一個足夠強大可以替代巨集操作(macro)的腳本語言,同時保持與C(和C++)中夠的相似性,以便開發人員能很快學會。 這個腳本語言捆綁在一個叫做CEnvi的共用軟體產品中,它首次向開發人員展示了這種語言的威力。 Nombas最終把Cmm的名字改成了ScripEase。原因是後面的部分(mm)聽起來過於“消極”,同時字母C“令人害怕”。 現在ScriptEase已經成為了Nombas產品背後的主要驅動力。 當Netscape Navigator嶄露頭角時,Nombas開發了個可以嵌入網頁中的CEnvi的版本。 這些早期的試驗稱為Espresso Page(濃咖啡般的頁面),它們代表了每個在萬維網上使用的客戶端腳本語言。 而Nombas絲毫沒有料到它的理念將會成為網際網路的一塊重要基石。
當網上衝浪越來越流行時,對於開發客戶端腳本的需求也逐漸增大。此時,大部分網際網路用戶還僅僅通過28.8kbit/s的數據機來連接到網路,即便這時網頁已經不斷地變得更大和更複雜。而更加加劇用戶痛苦的是,僅僅為了簡單的表單有效性驗證,就要與伺服器端進行多次的往返交互。設想一下,用戶填完一個表單,點擊提交按鈕,等待了30秒鐘的處理後,看到的卻是一條告訴你忘記填寫一個必要的欄位。那時正處於技術革新最前沿的Netscape,開始認真考慮一種開發客戶端腳本語言來解決簡單的處理問題。
當時工作於Netscape的Brendan Eich,開始著手為即將在1995年發行的Netscape Navigator 2.0開發一個稱之為LiveScript的腳本語言,當時的目的是同時在瀏覽器和伺服器(本來要叫它LiveWire的)端使用它。Netscape與Sun公司聯手及時完成LiveScript實現。就在Netscape Navigator 2.0即將正式發佈前,Netscape將其更名為JavaScript,目的是為了利用Java這個網際網路時髦辭彙。Netspace的賭註最終得到回報,JavaScript從此變成了網際網路的必備組件。
因為JavaScript 1.0如此成功,Netscape在Netscape Navigator 3.0中發佈了1.1版。恰巧那個時候,微軟決定進軍瀏覽器,發佈了IE 3.0 並搭載了一個JavaScript的克隆版,叫做JScript(這樣命名是為了避免與Netscape潛在的許可糾紛)。微軟步入Web瀏覽器領域的這重要一步雖然令其聲名狼藉,但也成為JavaScript語言發展過程中的重要一步。
在微軟進入後,有3種不同的JavaScript版本同時存在:Netscape Navigator 3.0中的JavaScript、IE中的JScript以及CEnvi中的ScriptEase。與C和其他編程語言不同的是,JavaScript並沒有一個標準來統一其語法或特性,而這3種不同的版本恰恰突出了這個問題。隨著業界擔心的增加,這個語言標準化顯然已經勢在必行。
1997年,JavaScript 1.1作為一個草案提交給歐洲電腦製造商協會(ECMA)。第39技術委員會(TC39)被委派來“標準化一個通用、跨平臺、中立於廠商的腳本語言的語法和語義”(http://www.ecma-international.org/memento/TC39.htm)。由來自Netscape、Sun、微軟、Borland和其他一些對腳本編程感興趣的公司的程式員組成的TC39錘煉出了ECMA-262,該標准定義了叫做ECMAScript的全新腳本語言。
在接下來的幾年裡,國際標準化組織及國際電工委員會(ISO/IEC)也採納ECMAScript作為標準(ISO/IEC-16262)。從此,Web瀏覽器就開始努力(雖然有著不同程度的成功和失敗)將ECMAScript作為JavaScript實現的基礎。
儘管ECMAScript是一個重要的標準,但它並不是JavaScript唯一的部分,當然,也不是唯一被標準化的部分。實際上,一個完整的JavaScript實現是由以下3個不同部分組成的
核心(ECMAScript)——JavaScript的核心ECMAScript描述了該語言的語法和基本對象
文檔對象模型(DOM)——DOM描述了處理網頁內容的方法和介面
瀏覽器對象模型(BOM)——BOM描述了與瀏覽器進行交互的方法和介面
ECMAScript、DOM、BOM將是我們之後課程的主要內容。
JavaScript與Java
儘管名字中有Java,但是JavaScript和Java幾乎沒有什麼共同點。Java是一種全功能的編程語言,是由Sun公司開發和推廣的。Java是C和C++編程語言之後的又一種主流語言,程式員可以使用它創建完整的應用程式和控制消費電子設備。與其他語言不同,Java宣稱具有跨平臺相容性;也就是說,程式員應該能夠編寫出可以在所有種類的機器上運行的Java程式,無論機器運行的是Windows、Mac OS X還是任何風格的UNIX。但實際上,Java不總是能夠實現這個夢想,因為Sun和微軟公司在這種語言的發展方向方面有很大的分歧。微軟公司首先試圖以自己的方式將Java集成到Windows中(Sun認為,這種方式使Java在Windows上以一種方式工作,而在其他機器上以另一種方式工作,從而破壞了Java的跨平臺相容性);隨後,微軟公司從Windows中完全去除了Sun的Java,而創建了自己的類Java語言:C#。經過兩公司之間的一輪訴訟之後,Sun占據了上風,現在可以在Windows(或Linux)上安裝Sun的最新Java版本(http://www.java.com/getjava/)。Mac OS X操作系統在安裝時會附帶Java。
JavaScript可以做什麼
用JavaScript可以做許多事情,使網頁更具交互性,給站點的用戶提供更好、更令人興奮的體驗。JavaScript使你可以創建活躍的用戶界面,當用戶在頁面間導航時向他們提供反饋。例如,你可能在一些站點上見過在滑鼠指針停留時突出顯示的按鈕。這是用JavaScript實現的,使用了一種稱為翻轉器(rollover)的技術 可以使用JavaScript確保用戶在表單中輸入有效的信息,這可以節省你的業務時間和開支。如果表單需要進行計算,那麼可以在用戶機器上的JavaScript中完成,而不需要任何伺服器端處理。你應該知道一種區分程式的方式:在用戶機器上運行的程式稱為客戶端(client-side)程式;在伺服器上運行的程式(包括後面要討論的CGI)稱為伺服器端(server-side)程式。 可以使用JavaScript根據用戶的操作即時創建定製的HTML頁面。假設你正在運行一個旅行指南站點,用戶點擊夏威夷作為旅游目的地。你可以在一個新視窗中顯示最新的夏威夷旅游指南。JavaScript可以控制瀏覽器,所以你可以打開新視窗、顯示警告框以及在瀏覽器視窗的狀態欄中顯示定製的消息。JavaScript有一套日期和時間特性,可以生成時鐘、日曆和時間戳文檔。 JavaScript還可以處理表單、設置cookie、即時構建HTML頁面以及創建基於Web的應用程式。
JavaScript不能做什麼
JavaScript是一種客戶端(client-side)語言;也就是說,設計它的目的是在用戶的機器上執行任務,而不是在伺服器上。因此,JavaScript有一些固有的限制,這些限制主要出於安全原因:
1.JavaScript不允許讀寫客戶機器上的文件。這是有好處的,因為你肯定不希望網頁能夠讀取自己硬碟上的文件,或者能夠將病毒寫入硬碟,或者能夠操作你電腦上的文件。唯一的例外是,JavaScript可以寫到瀏覽器的cookie文件,但是也有一些限制
2.JavaScript不允許寫伺服器機器上的文件。儘管寫伺服器上的文件在許多方面是很方便的(比如存儲頁面點擊數或用戶填寫的表單數據),但是JavaScript不允許這麼做。相反,需要用伺服器上的一個程式處理和存儲這些數據。這個程式可以是用Perl或PHP等語言編寫的CGI或Java程式。
3.JavaScript不能關閉不是由它自己打開的視窗。這是為了避免一個站點關閉其他任何站點的視窗,從而獨占瀏覽器。
4.JavaScript不能從來自另一個伺服器的已經打開的網頁中讀取信息。換句話說,網頁不能讀取已經打開的其他視窗中的信息,因此無法探察訪問這個站點的衝浪者還在訪問哪些其他站點。
Hello,JavaScriptWorld!
我們的第一個腳本:最經典的HelloWorld程式!
<script type="text/javascript">
document.write("<h2>Hello,JavaScriptWorld!</h2>");
</script>
- 1
- 2
- 3