window對象
瀏覽器的一個實例。在瀏覽器中,window對象有雙重角色,既是通過JavaScript訪問瀏覽器窗口的一個接口。
全局作用域
所有在全局作用域中聲明的變量、函數(shù)都會變成window對象的屬性和方法。
全局變量與在window對象上直接定義屬性有一點不同:全局變量不能通過delete操作符刪除,而直接在window對象上的定義的屬性可以。
嘗試訪問未聲明的變量會拋出錯誤,但是通過查詢window對象,可以知道某個可能未聲明的變量是否存在。
var newValue = oldValue;//error
var newValue = window.oldValue;//不會報錯
窗口關(guān)系及框架
如果頁面中包含框架,則每個框架都擁有自己的window對象,并且保存在frames集合中。在frames集合中,可以通過數(shù)值索引或者框架名稱來訪問響應(yīng)的window對象。每個window對象都有一個name屬性,其中包含框架的名稱。
top對象始終指向最高(最外)層的框架,也就是瀏覽器窗口。使用它可以確保在一個框架中正確地訪問另一個框架。因為對于在一個框架中編寫的任何代碼而言,其中的window對象指向的都是那個框架的特定市里,而非最高層的框架。與top相對的另一個window對象是parent。始終指向當(dāng)前框架的直接上層框架。在某些情況下,parent有可能等于top;但在沒有框架的情況下,parent一定等于top。與框架有關(guān)的最后一個對象是self,它始終指向window;實際上,self和window可以胡煌使用。所有這些對象都是window對象的屬性,可以通過window.parent、window.top等形式來訪問。在使用框架的情況下,瀏覽器中會村子多個Global對象。在每個框架中定義的全局變量會自動成為框架中的window對象的屬性。由于每個window對象都包含原生類型的構(gòu)造函數(shù),因此每個框架都有一套自己的構(gòu)造函數(shù),這些構(gòu)造函數(shù)一一對應(yīng),但并不相等。這個問題會影響到對框框架傳遞的對象使用instancof操作符。
窗口位置
IE、Safari、Opera、Chrome:screenLeft、screenTop
FireFox、Safari、Chrome:screenX、screenY
moveTo
moveBy
窗口大小
IE9+、Firefox、Safari、Opera、Chrome:innerWidth、innerHeight、outerWidth、outerHeight。
IE、Firefox、Safari、Opera、Chrome:
document.documemtElement.clientWidth、document.documentElement.clientHeight
resizeTo
resizeBy
導(dǎo)航和打開窗口
使用window.open()方法既可以導(dǎo)航到一個特定的url,也可以打開一個新的瀏覽器窗口。四個參數(shù):要加載的url、窗口目標(biāo)、一個特性字符串以及一個表示新頁面是否取代瀏覽器歷史記錄中當(dāng)前加載頁面的布爾值。通常只需第一個參數(shù)。
如果第二個參數(shù)并不是一個已經(jīng)存在的窗口或框架,那么該方法就會根據(jù)在第三個參數(shù)位置上傳入的字符串創(chuàng)建一個新窗口或新標(biāo)簽頁。如果沒有傳入第三個參數(shù),那么就會打開一個帶有全部默認(rèn)設(shè)置的新瀏覽器窗口。在不打開新窗口的強狂下,會忽略第三個參數(shù)。
調(diào)用close方法可以將打開的窗口關(guān)閉。
間歇調(diào)用和超時調(diào)用
setTimeout:兩個參數(shù),要執(zhí)行的代碼和以毫秒表示的時間。第一個參數(shù)可以是一個包含js代碼的字符串,也可以是一個函數(shù)。返回一個數(shù)值ID,表示超時調(diào)用。這個超時調(diào)用ID是計劃執(zhí)行代碼的唯一標(biāo)識符。可以通過他來取消超時調(diào)用。要取消尚未執(zhí)行的超時調(diào)用計劃,可以調(diào)用clearTimeout方法,并將相應(yīng)的超時調(diào)用ID作為參數(shù)傳遞給他。
setInterval:間歇調(diào)用,參數(shù)同上。
系統(tǒng)對話框
alert、confirm、prompt,顯示這些對話框的時候代碼會停止執(zhí)行,關(guān)掉后繼續(xù)執(zhí)行。
find、print
location對象
既是window對象的屬性,也是document對象的屬性。保存著當(dāng)前文檔的信息,還將url解析為獨立的片段,讓開發(fā)人員可以通過不同的屬性訪問這些片段。
hash:返回url中的hash
host:返回服務(wù)器名稱和端口號
hostname:返回不帶端口號的服務(wù)器名稱
href:返回當(dāng)前加載頁面的 完整url
pathname:返回url中的目錄和(或)文件名
port:返回端口號
protocol:返回頁面使用的協(xié)議
search:返回url的查詢字符串
每次修改location的屬性(hash除外),頁面都會以新url重新加載。
當(dāng)通過上述任何一種方式修改url之后,瀏覽器的歷史記錄中就會生成一條心記錄,因此用戶通過單擊后退蛋妞都會導(dǎo)航到前一個頁面。要禁用這種行為,可以使用replace方法。這個方法值接受一個參數(shù),即要導(dǎo)航到的url;結(jié)果雖然會導(dǎo)致瀏覽器位置改變,但不會在歷史記錄中生成新記錄。在調(diào)用replace之后,不能回到前一個頁面。
reload,重新加載當(dāng)前顯示的頁面。參數(shù)為true,表示從服務(wù)器重新加載。
navigator對象
識別客戶端瀏覽器
appCodeName:瀏覽器名稱
appName:完整的瀏覽器名稱
appVersion:瀏覽器的版本
cookieEnabled:
javaEnabled:
language:
mimeTypes:在瀏覽器中注冊的MIME類型數(shù)組
Platform:平臺
userAgent:瀏覽器的用戶代理字符串
檢測插件
注冊處理程序