一.客戶端中的window對象
- window對象表示當前瀏覽器的窗口,它是一個頂級對象,我們創建的所有對象、函數、變量都是window對象的成員。
- window對象自帶了一些非常有用的方法、屬性。
window的子對象:
- document:可操作顯示在窗口的文檔內容。
- location:可讓窗口載入新的URL。
- navigator:包含當前瀏覽器的信息。
- history:包含當前瀏覽器的歷史。
window的方法:
- open():打開一個新的窗體。
- close():關閉窗體。
window對話框函數:
- alert():彈出消息對話框(對話框中只有一個OK按鈕)。
- confirm():彈出消息對話框(對話框中包含一個OK按鈕與Cancel按鈕)。
- prompt():彈出消息對話框(對話框中包含一個OK按鈕、Cancel按鈕與一個文本輸入框)。
二.web文檔里使用Javascript
- Javascript程序可以操作文檔對象(window.document,通常window可以省略),遍歷和管理文檔內容,改變CSS的樣式,注冊適當的事件來改變文檔元素的行為。
- Javascript可增強用戶瀏覽web文檔的體驗。
- Javascript可操作XMLHttpRequest對象,實現從服務器獲取新信息,而不重新載入頁面。通常叫Ajax應用
三.html中嵌入script代碼簡單示例
<html> <head> <script> function showTime(){ var ele = document.getElementById('clock');//通過id=clock獲取文檔元素 var d = new Date();//取得當前時間 console.log(ele); ele.innerHTML = d.toLocaleTimeString();//轉換為本地時間 setTimeout(showTime,1000);//定時調用 } </script> <style> #clock{ font:bold 26pt; } </style> </head> <body onload="showTime();"> <h1>顯示當前時間:</h1> <span id="clock"></span> </body> </html>
javascript代碼可以放置在html屬性里來定義事件處理程序。如onclick,onchange事件等。
<html> <head> <script> </script> </head> <body> <input type="checkbox" name="sex" value="男" onchange="alert(this.checked);"/>男 </body> </html>
四.javascript執行順序
1、javascript程序執行有兩個階段。
第一階段,載入文檔內容,並執行<script>元素里的代碼,按javascript代碼順序從上往下執行。
第二階段,此階段是異步的,而且由事件驅動。事件驅動階段里發生的第一個事件是onload事件,表示文檔已經載入完成
五.javascript的線程模型
1、javascript中沒有任何關於線程的定義,也就是javascript是按單線程一樣工作,單線程執行是為讓編程更加簡單。
2、 當響應用戶的某個事件處理過程中,如果過程復雜可能導致瀏覽器會變的無響應。所以我們在處理時要反饋用戶當前瀏覽器是正在活動,以獲得最好的用戶體驗。
3、如果有些計算而導致明顯的延遲,應在文檔完全載入后做計算,也可用setTimeout()或setInterval()方法在后台運行子任務。
4.可通過setTimeout()可以把計算任務分成若干個小任務來執行,提高頁面的響應能力。
<html> <head> <script> //判斷質數 var MAX = 1000000; function isPrime(n) { if (n == 0 || n == 1) { return false; } var bound = Math.floor(Math.sqrt(n)); for (var i = 2; i <= bound; i++) { if (n % i == 0) { return false; } } return true; } var jobs = 10, numberPerJob = Math.ceil(MAX / jobs); var count = 0; function calculate(start, end) { for (var i = start; i <= end; i++) { if (isPrime(i)) { count++; } } } var start, end, timeout, finished = 0; function manage() { if (finished == jobs) { window.clearTimeout(timeout); alert("計算完成,質數個數為:" + count); } else { start = finished * numberPerJob + 1, end = Math.min((finished + 1) * numberPerJob, MAX); timeout = window.setTimeout(function() { calculate(start, end); finished++; manage(); }, 100); } } manage(); </script> </head> <body> <h1>有大量的計算,頁面立即顯示出來,大量的計算在后台運行。</h1> </body> </html>
六.兼容性
測試網站來測試瀏覽器的兼容性:http://www.quirksmode.org/dom/core/
- javascript編程中很多是不兼容性都是針對的IE的。
- 可以用IE支持的條件注釋來處理對IE的不兼容。
- 條件注釋可以應用到js,css,內容
<html> <head> <!--[if lt IE 9]> <script type="text/javascript" src="http://www.itbegin.com/commonscripts/bootstrap/html5shiv.min.js?20150301" ></script> <![endif]--> </head> <body> <!--[if IE 6]> 這是IE6顯示的內容 <![endif]--> <!--[if !IE ]><--> 這不是IE要顯示的內容 <!--><![endif]--> </body> </html>
七.javascript框架
1、jQuery是當前最流行的框架之一。
http://jquery.com/
2、Prototype與jQuery類似,是專門針對DOM和Ajax實現的實用工具。
http://prototypejs.org/
3、Dojo是一個大型的框架,它包含一個UI組件集合、包管理系統、數據抽象層等。
http://dojotoolkit.org/
4、YUI是Yahoo!使用的一個框架,包括了DOM工具、UI組件等。
http://yuilibrary.com/