1.2. JavaScript是什麼
JavaScript的前身是LiveScript, 但是網景公司後來把名字改成了JavaScript,很可能是由於Java所帶來的興奮。這個名字經常會迷惑人,因為儘管Java與JavaScript有些文法比較相近,但它們之間並沒有必然的聯絡。
Java相對於JavaScript就好比汽車(Car)相對於地毯(Carpet)。
——來自Usenet(一個世界性的新聞群組網路系統)上的JavaScript討論群組
網景公司在1996年創造了JavaScript,它包含在Netscape Navigator(NN) 2.0瀏覽器中,用解譯器來讀取和執行添加到.html頁面的JavaScript代碼。從此,這種語言穩步增長變得越來越普及,現在大多數的瀏覽器都支援它。
好的訊息是這意味著使用JavaScript的網頁可以被所有主流的瀏覽器解析。另一個訊息就不那麼美好了,就是不同的瀏覽器在實現JavaScript的方式上有所不同,儘管JavaScript語言是一樣的。但是,JavaScript可以被使用者關閉掉——並且一些公司和機構從安全形度考慮也要求他們的使用者這樣做。這個我們會簡短的作進一步的討論,同樣也是貫穿全書的。
關於JavaScript最大的特點就是你一旦學會了如何在瀏覽器編程中使用它,你就可以把它應用到其它領域中。微軟的伺服器-IIS-使用JavaScript去做服務端編程(ASP),PDF檔案現在也使用JavaScript,甚至Windows的任務管理也可以使用JavaScript來自動運行。許多應用程式,如Dreamweaver和Photoshop,都是使用JavaScript來實現指令碼化的。作業系統上的許多外掛程式,如蘋果公司的Dashboard或者Linux和Windows平台的Konfabulator,甚至允許你使用JavaScript編寫小的協助程式。
最近許多大公司也提供了你可以在自己網頁中使用JavaScript對象和方法的APIs(API),Google 地圖就是其中的一種。你只需要使用幾行代碼就可以在你的網站中提供可縮放和滾動的地圖。
另一個更好的特點就是JavaScript比進階程式設計語言和服務端程式設計語言更容易開發。它不需要像Java和C++那樣需要編譯,也不需要像Perl, PHP或Ruby語言那樣運行在伺服器上或需要在命令列執行。所有你需要做的就是使用文字編輯器和瀏覽器來編寫,執行,調試和應用JavaScript指令碼,而這兩個在所有的作業系統中都是已提供的。當然,也有工具可以使你做這些更加方便,例如就有Mozilla Venkman, Microsoft Script Debugger, 和kjscmd JavaScript這樣的調試器。
1.3. JavaScript的問題和法律權利
就如我在這一章的開始提到的,JavaScript在過去的幾年裡已經成了web開發的一個完整部分,但它也被用作不正當的用途。結果,它就落了一個不好的名聲。導致這個結果的原因是蠻橫的JavaScript特效,如移動頁面元素和快顯視窗。這種情況你也許印象比較深刻,第一次你看到他們但很快就轉變成另一個網頁,甚至有的情況下彈出許多視窗,以至於你不希望再開啟視窗了。許多類似的效果都來自DHTML (在第三章中有更多介紹)。
術語使用者代理程式和對使用者代理程式是什麼的缺乏理解同樣也是個問題。通常,使用者代理程式是指一個瀏覽器,如微軟的Internet Explorer(MSIE),Netscape,Mozilla(Moz),Firefox(Fx),Opera或Safari。但是瀏覽器不是Web上唯一的使用者代理程式。其它的包括:
l 輔助技術,用來協助使用者克服它們的缺陷—如文本閱讀軟體或者盲人顯示器
l 純文字網頁瀏覽器,像Lynx
l Web啟用的應用程式
l 遊戲控制台
l 手機/蜂窩電話
l 掌上手機(PDAs)
l 互動電視機頂盒
l 搜尋引擎和其它檢索程式
l 更多其他的
這麼多類使用者代理程式,使用了不同的技術手段(一些舊的使用者代理程式沒有更新),對於JavaScript也是一個非常大的危險。
並不是你網站所有的訪問者都能體驗你應用的特效,許多人都會出於安全的考慮把JavaScript功能關閉。JavaScript既可以被用來做好事,也可以用來做壞事。如果作業系統(如沒有打補丁的Windows)允許,你可以通過JavaScript來在一台電腦上安裝病毒或木馬或者讀取使用者的資訊,然後發到另一個伺服器上。
註解:沒有辦法知道訪問者在使用什麼工具或者它的電腦的功能。再者,你永遠不知道訪問者的經驗和能力如何。這也是網路很好的一個方面---每個人都可以參與。然後,這樣會給JavaScript程式員帶來意外的結果。
在大多情況下,你可能想要一種服務端的替代方案。它可以測試使用者代理程式是否支援需要的功能,如果不支援,伺服器會使用其替代方案。
獨立的指令碼語言對於網站是個法定的要求,在英聯邦的數字歧視法,美國法律的508節和世界上其它的地區法律中都有定義。這意味著如果你開發的網站沒有JavaScript
就不能使用,或你的JavaScript特效需要使用者具有一定的能力或者他們的使用者代理程式沒有起作用,你的客戶就可以控告你歧視。
然而,JavaScript既不是邪惡的也不是沒用的,它是一個偉大的工具,可以協助在你網站上衝浪的使用者,感覺更加平滑流暢和花費更少的時間。