1. 程式人生 > 實用技巧 >JavaScript Window物件 整理

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 個定時器專用方法,說明如下表所示,使用它們可以實現程式碼定時執行,或者延遲執行,使用定時器可以設計演示動畫。

window 物件定時器方法列表
方法說明
setInterval() 按照執行的週期(單位為毫秒)呼叫函式或計算表示式
setTimeout() 在指定的毫秒數後呼叫函式或計算表示式
clearInterval() 取消由 setInterval() 方法生成的定時器
clearTimeout() 取消由 setTimeout() 方法生成的定時器

使用框架集

HTML 允許使用 frameset 和 frame 標籤建立框架集頁面。另外,在文件中可以使用 iframe 標籤建立浮動框架。這兩種型別的框架性質是相同的。


框架之間可以通過 window 相關屬性進行引用,詳細說明如下表所示。

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() 方法則會放棄鍵盤焦點。

更多參考:

JavaScript JSON物件(一)

JavaScript Screen物件

XMLHttpRequest Level 2 使用指南