# javascript快速入門1--JavaScript前世今生,HelloWorld與開發環境
## 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不能從來自另一個服務器的已經打開的網頁中讀取信息。換句話說,網頁不能讀取已經打開的其他窗口中的信息,因此無法探察訪問這個站點的沖浪者還在訪問哪些其他站點。
我們的第一個腳本:最經典的HelloWorld程序!
```
<script type="text/javascript">
document.write("<h2>Hello,JavaScriptWorld!</h2>");
</script>
```
## 開發環境
選擇一個你喜歡的純文本編輯器或<abbr title="集成開發環境">IDE</abbr>
NotePad++
VIM
UltraEdit
EditPlus
gEdit(Unix)
Emacs(Mac/Unix)
其它
至少一個符合W3C標準的瀏覽器(推薦火狐瀏覽器),和一些市場上流行的瀏覽器(IE)
FireFox 3.0+
Internet Explorer 6.0+ (由于IE具有多種不同的版本,還推薦安裝IETester)
Google Chrome 1.0+
Opera 9.0+
Safari 3.0+
調試工具
FireFox下的FireBug,Venkman等
IE下的IE DeveloperToolbar,MS Script Debugger等(強烈不推薦MS Script Debugger,安裝之后問題多)
Google Chrome 的JS控制臺已經很強大了,Opera的錯誤控制臺也可以,Opera蜻蜓和FireBug一樣強大,Safari具有和Chrome一樣的控制臺
- 介紹
- HTML/CSS 教程
- 第 1 章 HTML5 概述
- 第 2 章 基本格式
- 第 3 章 文本元素
- 第 4 章 超鏈接和路徑
- 第 5 章 分組元素
- 第 6 章 表格元素
- 第 7 章 文檔元素
- 第 8 章 嵌入元素
- 第 9 章 音頻和視頻
- 第 10 章 表單元素[上]
- 第 10 章 表單元素[中]
- 第 10 章 表單元素[下]
- 第 11 章 全局屬性和其他
- 第 12 章 CSS 入門
- 第 13 章 CSS 選擇器[上]
- 第 14 章 CSS 顏色與度量單位
- 第 15 章 CSS 文本樣式[上]
- 第 15 章 CSS 文本樣式[下]
- 第 16 章 CSS 盒模型[上]
- 第 16 章 CSS 盒模型[下]
- 第 17 章 CSS 邊框與背景[上]
- 第 17 章 CSS 邊框與背景[下]
- 第 18 章 CSS 表格與列表
- 第 19 章 CSS 其他樣式
- 第 20 章 CSS3 前綴和 rem
- 第 21 章 CSS3 文本效果
- 第 21 章 CSS3 文本效果
- 第 23 章 CSS3 邊框圖片效果
- 第 24 章 CSS3 變形效果[下]
- 第 25 章 CSS3 過渡效果
- 第 26 章 CSS3 動畫效果
- 第 27 章 CSS 傳統布局[上]
- 第 27 章 CSS 傳統布局[下]
- 第 28 章 CSS3 多列布局
- 第 29 章 CSS3 彈性伸縮布局[上]
- 第 29 章 CSS3 彈性伸縮布局[中]
- 第 29 章 CSS3 彈性伸縮布局[下]
- 第 30 章 使用 Emmet 插件
- Bootstrap 教程
- 第 1 章 Bootstrap 介紹
- 第 2 章 排版樣式
- 第 3 章 表格和按鈕
- 第 4 章 表單和圖片
- 第 5 章 柵格系統
- 第 6 章 輔組類和響應式工具
- 第 7 章 圖標菜單按鈕組件
- 第 8 章 輸入框和導航組件
- 第 9 章 路徑分頁標簽和徽章組件
- 第 10 章 巨幕頁頭縮略圖和警告框組件
- 第 11 章 進度條媒體對象和 Well 組件
- 第 12 章 列表組面板和嵌入組件
- 第 13 章 模態框插件
- 第 14 章 下拉菜單和滾動監聽插件
- 第 15 章 標簽頁和工具提示插件
- 第 16 章 彈出框和警告框插件
- 第 17 章 按鈕和折疊插件
- 第 18 章 輪播插件
- 第 19 章 附加導航插件
- 第 20 章 項目實戰--響應式導航[1]
- 第 20 章 項目實戰--響應式輪播圖[2]
- 第 20 章 項目實戰--首頁內容介紹[上][3]
- 第 20 章 項目實戰--首頁內容介紹[下][4]
- 第 20 章 項目實戰--資訊內容[5,6]
- 第 20 章 項目實戰--案例和關于[7]
- javaScript 教程
- javascript快速入門1--JavaScript前世今生,HelloWorld與開發環境
- javascript快速入門2--變量,小學生數學與簡單的交互
- javascript快速入門3--分支判斷與循環
- javascript快速入門4--函數與內置對象
- javascript快速入門5--數組與對象
- javascript快速入門6--Script標簽與訪問HTML頁面
- javascript快速入門7--ECMAScript語法基礎
- javascript快速入門8--值,類型與類型轉換
- javascript快速入門9--引用類型
- javascript快速入門10--運算符,語句
- javascript快速入門11--正則表達式
- javascript快速入門12--函數式與面向對象
- javascript快速入門13--BOM——瀏覽器對象模型(Browser Object Model)
- javascript快速入門14--DOM基礎
- javascript快速入門15--節點
- javascript快速入門15--表單
- javascript快速入門16--表格
- javascript快速入門17--事件
- javascript快速入門18--樣式
- javascript快速入門19--定位
- javascript快速入門20--Cookie
- javascript快速入門21--DOM總結
- javascript快速入門22--Ajax簡介
- javascript快速入門23--XHR—XMLHttpRequest對象
- javascript快速入門24--XML基礎
- javascript快速入門25--瀏覽器中的XML
- javascript快速入門26--XPath
- javascript快速入門27--XSLT基礎
- PHP 教程
- 第一章 如何加載運行已發布的PHP項目
- 第二章 PHP基礎
- 第三章 操作符與控制結構
- 第四章 數學運算
- 第五章 數組
- 第六章 目錄與文件
- 第七章 自定義函數
- 第八章 字符串處理
- 第九章 正則表達式
- 第十章 日期與時間
- 第十一章 表單與驗證
- 第十二章 會話控制
- 第十三章 上傳文件
- 第十四章 處理圖像
- 第十五章 MySQL 數據庫
- 第十六章 PHP 操作MySQL
- 第十七章 面向對象基礎
- 第十八章 面向對象的特性
- 第十九章 面向對象的工具