瀏覽器裏面,window
對象指當前瀏覽器窗口。他是當前頁面的頂層對象。數組
window.name
表示當前瀏覽器窗口的名字。window.closed
返回一個布爾值,表示窗口是否關閉window.opener
屬性表示打開當前窗口的父窗口,若是沒有,返回null
window.self
和window.window
屬性都指向窗口自己。window.frames
返回一個類數組對象,成員爲頁面內全部框架窗口,包括frame
元素和iframe
元素。window.frames[0]
表示頁面中的第一個框架窗口。window.frameElement
主要用於當前窗口嵌在另外一個網頁的狀況,返回當前窗口所在的那個元素節點。window.top
指向最頂層窗口,主要用於框架窗口裏面獲取頂層窗口window.parent
指向父窗口。若是沒有父窗口,指向自身。window.screenX
,window.screenY
返回瀏覽器窗口左上角相對於當前屏幕左上角的水平距離和垂直距離(單位像素),屬性只讀window.innerHeight
,window.innerWidth
返回網頁在當前窗口中可見部分的高度和寬度(單位像素)。window.outerHeight
,window.outerWidth
屬性返回瀏覽器窗口的高度和寬度,包括瀏覽器菜單和邊框(單位像素)window.scrollX
,window.scrollY
返回頁面的水平滾動距離和垂直滾動距離window.pageXOffset
,window.pageYOffset
分別是上面兩個屬性的別名window.locationbat
地址欄對象window.menubar
菜單欄對象window.scrollbars
窗口的滾動條對象window.toolbar
工具欄對象window.statusbar
狀態欄對象window.personalbar
用戶安裝的我的工具欄對象這些對象的visible
屬性是一個布爾值,表示這些組件是否可見。這些屬性只讀。瀏覽器
window.alert()
彈出對話框,只有要給肯定按鈕,每每用來通知用戶某些信息。bash
window.prompt()
彈出對話框,提示文字的下方,有一個輸入框,要求用戶輸入信息,並有「肯定」和「取消」兩個按鈕。框架
var result = prompt('您的年齡?', 25)
//方法的第二個參數是可選的,可是最好老是提供第二個參數,做爲輸入框的默認值。
複製代碼
window.confirm()
彈出的對話框,除了提示信息以外,只有「肯定」和「取消」兩個按鈕,每每用來徵詢用戶是否贊成。var okay = confirm('Please confirm this message.');
if (okay) {
// 用戶按下「肯定」
} else {
// 用戶按下「取消」
}
複製代碼
window.open()
用於新建另外一個瀏覽器窗口。方法接受三個參數函數
window.open(url,windowName,[windowFeatures])
複製代碼
windowFeatures
:字符串,內容爲逗號分隔的鍵值對(詳見下文),表示新窗口的參數,好比有沒有提示欄、工具條等等。 第三個參數能夠設定以下屬性。工具
參數以下:oop
dialog=yes
。window.close
方法用於關閉當前窗口,通常只用來關閉window.open
方法新建的窗口。佈局
window.stop()
方法徹底等同於單擊瀏覽器的中止按鈕,會中止加載圖像、視頻等正在或等待加載的對象。性能
window.moveTo()
方法用於移動瀏覽器窗口到指定位置。它接受兩個參數,分別是窗口左上角距離屏幕左上角的水平距離和垂直距離,單位爲像素。動畫
window.moveBy()
方法將窗口移動到一個相對位置。它接受兩個參數,分佈是窗口左上角向右移動的水平距離和向下移動的垂直距離,單位爲像素。
window.resizeTo()
方法用於縮放窗口到指定大小。接受兩個參數,第一個是縮放後窗口的寬度(outWidth
屬性),第二個是縮放後窗口高度(outHeight
屬性)
window.resizeTo(
window.screen.availWidth / 2,
window.screen.availHeight / 2
)
//上面代碼將當前窗口縮放到,屏幕可用區域的一半寬度和高度。
複製代碼
window.resizeBy()
方法用於縮放窗口。它與window.resizeTo()的區別是,它按照相對的量縮放,window.resizeTo()須要給出縮放後的絕對大小。它接受兩個參數,第一個是水平縮放的量,第二個是垂直縮放的量,單位都是像素。window.resizeBy(-200, -200)
//上面的代碼將當前窗口的寬度和高度,都縮小200像素。
複製代碼
window.scrollTo()
方法用於將文檔滾動到指定位置。接受兩個參數,表示滾動後位於窗口左上角的頁面座標。也可接受一個配置對象做爲參數。window.scrollTo(options)
window.scrollTo({
top: 1000,
behavior: 'smooth'
});
複製代碼
options有三個屬性。
top:滾動後頁面左上角的垂直座標,即 y 座標。
left:滾動後頁面左上角的水平座標,即 x 座標。
behavior:字符串,表示滾動的方式,有三個可能值(smooth、instant、auto),默認值爲auto。
window.scrollBy()
方法用於將網頁滾動指定距離(單位像素)。它接受兩個參數:水平向右滾動的像素,垂直向下滾動的像素。
window.print()
調用打印
window.focus()
方法會激活窗口,使其得到焦點,出如今其餘窗口的前面。
window.blur()
方法將焦點從窗口移除。
方法跟setTimeout
相似,都是推遲某個函數的執行,不一樣之處,是setTimeout
必須指定推遲的時間,window.requestAnimationFrame()
則是推遲到瀏覽器下次重流時執行,執行完纔會進行下次重繪。
若是某個函數改變了網頁佈局,通常放在window.requestAnimationFrame()
裏面執行,這樣能夠節省系統資源,是網頁效果更加平滑。
該方法接受一個回調函數做爲參數
window.requestAnimationFrame(callback)
複製代碼
上面callback
回調函數執行時,他的參數時系統傳入的高精度時間戳,單位是毫秒,表示網頁加載的時間。
window.requestAnimationFrame()
返回值是一個整數,這個整數能夠傳入window.cancelAnimationFrame()
,用來取消回調函數的執行。
let el = document.getElementById('animation');
el.style,position = 'absolute';
let start = null;
function step(timestamp){
if(!start) start = timestamp;
// 元素不斷向左移,最大不超過200像素
let progress = timestamp - start;
el.style.left = Math.min(progress/10, 200) + 'px';
// 若是距離第一次執行不超過 2000 毫秒,
// 就繼續執行動畫
if(progress < 2000){
window,requestAnimationFrame(step);
}
}
window,requestAnimationFrame(step);
複製代碼
window.requestIdleCallback()
跟setTimeout
相似,也是將某個函數推遲執行,可是它保證將回調函數推遲到系統資源空閒時執行。也就是說,若是某個任務不是很關鍵,就可使用window.requestIdleCallback()
將其推遲執行,以保證網頁性能。
它跟window.requestAnimationFrame()
的區別在於,後者指定回調函數在下一次瀏覽器重排時執行,問題在於下一次重排時,系統資源未必空閒,不必定能保證在16毫秒以內完成;window.requestIdleCallback()
能夠保證回調函數在系統資源空閒時執行。
該方法接受一個回調函數和一個配置對象做爲參數。配置對象能夠指定一個推遲執行的最長時間,若是過了這個時間,回調函數無論系統資源有無空虛,都會執行。
window.requestIdleCallback(callback[, options])
複製代碼
callback
參數是一個回調函數。該回調函數執行時,系統會傳入一個IdleDeadline
對象做爲參數。IdleDeadline
對象有一個didTimeout
屬性(布爾值,表示是否爲超時調用)和一個timeRemaining()
方法(返回該空閒時段剩餘的毫秒數)。
options
參數是一個配置對象,目前只有timeout
一個屬性,用來指定回調函數推遲執行的最大毫秒數。該參數可選。
window.requestIdleCallback()
方法返回一個整數。該整數能夠傳入window.cancelIdleCallback()
取消回調函數。
requestIdleCallback(myNonEssentialWork);
function myNonEssentialWork(deadline) {
while (deadline.timeRemaining() > 0) {
doWorkIfNeeded();
}
}
複製代碼
requestIdleCallback(processPendingAnalyticsEvents, { timeout: 2000 });
複製代碼
上面代碼指定,processPendingAnalyticsEvents
必須在將來2秒以內執行。
若是因爲超時致使回調函數執行,則deadline.timeRemaining()
返回0
,deadline.didTimeout
返回true
。
若是屢次執行window.requestIdleCallback()
,指定多個回調函數,那麼這些回調函數將排成一個隊列,按照先進先出的順序執行。