BOM 的核心對象是 window,它表示瀏覽器的一個實例。
一、window 對象
1. 窗口位置
IE、Safari、Opera 和 Chrome 都提供了 screenLeft 和 screenTop 屬性,分別用于表示窗口相對于屏幕左邊和上邊的位置。
Firefox 則在 screenX 和 screenY 屬性中提供相同的窗口位置信息,Safari 和 Chrome 也同時支持這兩個屬性。
2. 窗口大小
IE9+、Firefox、Safari、Opera 和 Chrome 均為此提供了4個屬性:innerWidth、innerHeight、outerWidth、outerHeight。
outerWidth、outerHeight 返回瀏覽器窗口本身的尺寸。innerWidth、innerHeight 表示頁面視圖區的大小(減去邊框寬度)。在 Chrome 中,這4個屬性返回相同的值,即視口大小而非瀏覽器窗口大小。
在 IE、Firefox、Safari、Opera 和 Chrome 中,document.documentElement.clientWidth 和document.documentElement.clientHeight 中保存了頁面視口的信息。
3. 導航和打開窗口
window.open(),這個方法會返回一個指向新窗口的引用。
4. 間歇調用和超時調用
超時調用需要使用 window 對象的 setTimeout() 方法,它接收兩個參數:要執行的代碼和以毫秒表示的時間(即在執行代碼前需要等待多少毫秒)。調用?setTimeout() 之后,該方法會返回一個數值 ID,表示超時調用。要取消尚未執行的超時調用計劃,可以調用 clearTimeout() 方法并將相應的超時調用 ID 作為參數傳遞給它。
間歇調用與超時調用類似,只不過它會按照指定的時間間隔重復執行代碼,直至間歇調用被取消或者頁面被卸載。設置間歇調用的方法是?setInterval(),它接收的參數與?setTimeout() 相同。要取消尚未執行的間歇調用,可以使用 clearInterval() 方法并傳入相應的間歇調用 ID。
一般認為,使用超時調用來模擬間歇調用的是一種最佳模式。在開發環境下,很少使用真正的間歇調用,原因是后一個間歇調用可能會在前一個間歇調用結束之前啟動。最好不要使用間歇調用。
5. 系統對話框
alert()、confirm()、prompt()
二、location 對象
location 是最有用的 BOM 對象之一,它提供了與當前窗口中加載的文檔有關的信息,還提供了一些導航功能。它既是 window 對象的屬性,也是 document 對象的屬性;換句話說,window.location 和 document.location 引用的是同一個對象。
location的所有屬性:hash、host、hostname、href、pathname、port、protocol、search。
位置操作
assign() 方法。location.assign("http://www.wrox.com");
如果是將 location.href 或 window.location 設置為一個 URL 值,也會以該值調用 assign() 方法。例如,下列兩行代碼與顯式調用 assign() 方法效果完全一樣。
location.;
window.location = "http://www.wrox.com";
最常用的是 location.href 。
replace() 方法、reload() 方法
三、navigator 對象
四、screen 對象
五、history 對象
go()、back()、forward()