目前主流的瀏覽器:html
IE 6~11:從IE10開始支持ES6標準;瀏覽器
Chrome:基於Webkit內核,內置了很是強悍的JavaScript引擎——V8;安全
Safari:基於Webkit內核;服務器
Firefox:Gecko內核,JavaScript引擎OdinMonkey;cookie
不一樣的瀏覽器對JavaScript支持的差別主要是,有些API的接口不同,好比AJAX,File接口。對於ES6標準,不一樣的瀏覽器對各個特性支持也不同。app
window對象不但充當全局做用域,並且表示瀏覽器窗口。工具
window對象有innerWidth和innerHeight屬性,能夠獲取瀏覽器窗口的內部寬度和高度。內部寬高是指除去菜單欄、工具欄、邊框等佔位元素後,用於顯示網頁的淨寬高。
對應的,還有一個outerWidth和outerHeight屬性,能夠獲取瀏覽器窗口的整個寬高。
兼容性:IE<=8不支持。學習
navigator對象表示瀏覽器的信息,最經常使用的屬性包括:網站
navigator.appName:瀏覽器名稱; navigator.appVersion:瀏覽器版本; navigator.language:瀏覽器設置的語言; navigator.platform:操做系統類型; navigator.userAgent:瀏覽器設定的User-Agent字符串。
充分利用JavaScript對不存在屬性返回undefined的特性,直接用短路運算符||計算:加密
var width = window.innerWidth || document.body.clientWidth;
screen對象表示屏幕的信息,經常使用的屬性有:
screen.width:屏幕寬度,以像素爲單位; screen.height:屏幕高度,以像素爲單位; screen.colorDepth:返回顏色位數,如八、1六、24。
location對象表示當前頁面的URL信息。例如,一個完整的URL:
http://www.example.com:8080/p...
能夠用location.href獲取。要得到URL各個部分的值,能夠這麼寫:
location.protocol; // 'http' location.host; // 'www.example.com' location.port; // '8080' location.pathname; // '/path/index.html' location.search; // '?a=1&b=2' location.hash; // 'TOP'
要加載一個新頁面,能夠調用location.assign()。若是要從新加載當前頁面,調用location.reload()方法很是方便。
document對象表示當前頁面。因爲HTML在瀏覽器中以DOM形式表示爲樹形結構,document對象就是整個DOM樹的根節點。
document的title屬性是從HTML文檔中的<title>xxx</title>讀取的,可是能夠動態改變:
document.title = '努力學習JavaScript!';
請觀察瀏覽器窗口標題的變化。
用document對象提供的getElementById()和getElementsByTagName()能夠按ID得到一個DOM節點和按Tag名稱得到一組DOM節點
document對象還有一個cookie屬性,能夠獲取當前頁面的Cookie。
Cookie是由服務器發送的key-value標示符。由於HTTP協議是無狀態的,可是服務器要區分究竟是哪一個用戶發過來的請求,就能夠用Cookie來區分。當一個用戶成功登陸後,服務器發送一個Cookie給瀏覽器,例如user=ABC123XYZ(加密的字符串)...,此後,瀏覽器訪問該網站時,會在請求頭附上這個Cookie,服務器根據Cookie便可區分出用戶。
Cookie還能夠存儲網站的一些設置,例如,頁面顯示的語言等等。
JavaScript能夠經過document.cookie讀取到當前頁面的Cookie:
document.cookie; // 'v=123; remember=true; prefer=zh'
服務器在設置Cookie時可使用httpOnly,設定了httpOnly的Cookie將不能被JavaScript讀取。這個行爲由瀏覽器實現,主流瀏覽器均支持httpOnly選項,IE從IE6 SP1開始支持。
爲了確保安全,服務器端在設置Cookie時,應該始終堅持使用httpOnly。
history對象保存了瀏覽器的歷史記錄,JavaScript能夠調用history對象的back()或forward (),至關於用戶點擊了瀏覽器的「後退」或「前進」按鈕。
這個對象屬於歷史遺留對象,對於現代Web頁面來講,因爲大量使用AJAX和頁面交互,簡單粗暴地調用history.back()可能會讓用戶感到很是憤怒。
新手開始設計Web頁面時喜歡在登陸頁登陸成功時調用history.back(),試圖回到登陸前的頁面。這是一種錯誤的方法。
任何狀況,你都不該該使用history這個對象了。