JavaScript Window物件 整理
一、JavaScript Window物件 說明
window 是客戶端瀏覽器物件模型的基類,window 物件是客戶端JavaScript的全域性物件。一個 window 物件實際上就是一個獨立的視窗,對於框架頁面來說,瀏覽器視窗每個框架都包含一個 window 物件。
全域性作用域
在客戶端瀏覽器中,window 物件是訪問 BOM 的介面,如引用 document 物件的 document 屬性,引用自身的 window 和 self 屬性等。同時 window 也為客戶端JavaScript 提供全域性作用域。
示例
由於 window 是全域性物件,因此所有的全域性變數都被解析為該物件的屬性。
var a = "window.a"; //全域性變數 function f () { //全域性函式 console.log(a); } console.log(window.a); //返回字串“window.a” window.f(); //返回字串“window.a”
使用 delete 運算子可以刪除屬性,但是不能刪除變數。
訪問客戶端物件
使用 window 物件可以訪問客戶端其他物件,這種關係構成瀏覽器物件模型,window 物件代表根節點,瀏覽器物件關係的關係如圖所示,每個物件說明如下。
- window:客戶端 JavaScript 頂層物件。每當 <body> 或 <frameset> 標籤出現時,window 物件就會被自動建立。
- navigator:包含客戶端有關瀏覽器資訊。
- screen:包含客戶端螢幕的資訊。
- history:包含瀏覽器視窗訪問過的 URL 資訊。
- location:包含當前網頁文件的 URL 資訊。
- document:包含整個 HTML 文件,可被用來訪問文件內容及其所有頁面元素。
使用系統對話方塊
window 物件定義了 3 個人機互動的方法,主要方便對 JavaScript 程式碼進行除錯。
- alert():確定提示框。由瀏覽器向用戶彈出提示性資訊。該方法包含一個可選的提示資訊引數。如果沒有指定引數,則彈出一個空的對話方塊。
- confirm():選擇提示框。。由瀏覽器向用戶彈出提示性資訊,彈出的對話方塊中包含兩個按鈕,分別表示“確定”和“取消”按鈕。如果點選“確定”按鈕,則該方法將返回 true;單擊“取消”按鈕,則返回 false。confirm() 方法也包含一個可選的提示資訊引數,如果沒有指定引數,則彈出一個空的對話方塊。
- prompt():輸入提示框。可以接收使用者輸入的資訊,並返回輸入的資訊。prompt() 方法也包含一個可選的提示資訊引數,如果沒有指定引數,則彈出一個沒有提示資訊的輸入文字對話方塊。
開啟和關閉視窗
使用 window 物件的 open() 方法可以開啟一個新視窗。用法如下:
window.open (URL, name, features, replace)
引數列表如下:
- URL:可選字串,宣告在新視窗中顯示網頁文件的 URL。如果省略,或者為空,則新視窗就不會顯示任何文件。
- name:可選字串,宣告新視窗的名稱。這個名稱可以用作標記 <a> 和 <form> 的 target 目標值。如果該引數指定了一個已經存在的視窗,那麼 open() 方法就不再建立一個新視窗,而只是返回對指定視窗的引用,在這種情況下,features 引數將被忽略。
- features:可選字串,聲明瞭新視窗要顯示的標準瀏覽器的特徵,具體說明如下表所示。如果省略該引數,新視窗將具有所有標準特徵。
- replace:可選的布林值。規定了裝載到視窗的 URL 是在視窗的瀏覽歷史中建立一個新條目,還是替換瀏覽歷史中的當前條目。
該方法返回值為新建立的 window 物件,使用它可以引用新建立的視窗。
特徵 | 說明 |
---|---|
fullscreen = yes | no | 1 | 0 | 是否使用全屏模式顯示瀏覽器。預設是 no。處於全屏模式的視窗同時處於劇院模式 |
height = pixels | 視窗文件顯示區的高度。單位為畫素。 |
left = pixels | 視窗的 x 座標。單位為畫素。 |
location =yes | no | 1 | 0 | 是否顯示地址欄位。預設是 yes。 |
menubar =yes | no | 1 | 0 | 是否顯示選單欄。預設是 yes。 |
resizable =yes | no | 1 | 0 | 視窗是否可調節尺寸。預設是 yes。 |
scrollbars =yes | no | 1 | 0 | 是否顯示滾動條。預設是 yes。 |
status =yes | no | 1 | 0 | 是否新增狀態列。預設是 yes。 |
toolbar =yes | no | 1 | 0 | 是否顯示瀏覽器的工具欄。預設是 yes。 |
top = pixels | 視窗的 y 座標 |
width = pixels | 視窗的文件顯示區的寬度。單位為元素。 |
新建立的 window 物件擁有一個 opener 屬性,引用
使用定時器
window 物件包含 4 個定時器專用方法,說明如下表所示,使用它們可以實現程式碼定時執行,或者延遲執行,使用定時器可以設計演示動畫。
方法 | 說明 |
---|---|
setInterval() | 按照執行的週期(單位為毫秒)呼叫函式或計算表示式 |
setTimeout() | 在指定的毫秒數後呼叫函式或計算表示式 |
clearInterval() | 取消由 setInterval() 方法生成的定時器 |
clearTimeout() | 取消由 setTimeout() 方法生成的定時器 |
使用框架集
HTML 允許使用 frameset 和 frame 標籤建立框架集頁面。另外,在文件中可以使用 iframe 標籤建立浮動框架。這兩種型別的框架性質是相同的。
框架之間可以通過 window 相關屬性進行引用,詳細說明如下表所示。
屬性 | 說明 |
---|---|
top | 如果當前視窗是框架,它就是對包含這個框架的頂級視窗的 window 物件的引用。注意,對於巢狀在其他框架中的框架,top 未必等於 parent |
parent | 如果當前的視窗是框架,它就是對視窗中包含這個框架的父級框架引用 |
window | 自引用,是對當前 window 物件的引用,與 self 屬性同義 |
self | 自引用,是對當前 window 物件的引用,與 window 屬性同義 |
frames[] | window 物件集合,代表視窗中的各個框架(如果存在) |
name | 視窗的名稱。可被 HTML 標籤 <a> 的 target 屬性使用 |
opener | 對開啟當前視窗的 window 物件的引用 |
控制視窗大小和位置
window 物件定義了 3 組方法分別用來調整視窗位置、大小和滾動條的偏移位置:moveTo() 和 moveBy()、resizeTo() 和 resizeBy()、scrollTo() 和 scrollBy()。
這些方法都包含兩個引數,分別表示 x 軸偏移值和 y 軸偏移值。包含 To 字串的方法都是絕對的,也就是 x 和 y 是絕對位置、大小或滾動偏移;包含 By 字串的方法都是相對的,也就是它們在視窗的當前位置、大小或滾動偏移上增加所指定的引數 x 和 y 的值。
方法 moveTo() 可以將視窗的左上角移動到指定的座標,方法 moveBy() 可以將視窗上移、下移或左移、右移指定數量的畫素。方法 resizeTo() 和 resizeBy() 可以按照絕對數量和相對數量調整視窗的大小。
window 物件還定義了 focus() 和 blur() 方法,用來控制視窗的顯示焦點。呼叫 focus() 方法會請求系統將鍵盤焦點賦予視窗,呼叫 blur() 方法則會放棄鍵盤焦點。
更多參考: