分類  >  Web前端 >

<二>Window對象

tags:    時間:2013-12-09 23:21:12
<2>Window對象
二、Window對象

上一節講過,window對象是客戶端javascript程序的全局對象。這裡介紹一些window對象的屬性和方法。

1. 計時器setTimeout()/clearTimeout(), setInterval()/clearInterval()
setTimeout()和setInterval()可以用來註冊在指定的事件之後單次或重複調用的函數。
setTimeout()方法用來實現一個函數在指定的毫秒數之後運行,setTimeout返回一個值,這個值可以傳遞給clearTimeout()用於取消這個函數的執行。
setInterval()會在指定的毫秒數的間隔里重複調用:
setInterval(updateClock, 600000); //每60秒調用一次updateClock()
setInterval也返回一個值,這個值可以傳遞給clearInterval()用於取消後續函數的調用。

2. 瀏覽器定位和導航 location
Window對象的location屬性引用的是Location對象,它表示該窗口中當前顯示的文檔的url,並定義了方法來使窗口載入新的文檔。Document對象的location屬性頁引用到Location對象。
window.location === document.location; // 總是返回true
2.1 解析url
Location對象的href屬性時一個字元串,包含url的完整文本。Location對象的toString()方法返回href的值,因此在會隱式調用toString()的情況下,可以用location屬性代替location.href。
Location對象的其他屬性,protocal,host,hostname,port,pathname和search分別表示url的各個部分,他們稱為「url分解」屬性(這些屬性是可寫的,也就是可以運算重新賦值)。Location對象的search屬性返回的是問號之後的url。
示例:





2.2 載入新的文檔 assign(), replace(), reload(), location
   Location對象的assign()方法可以使窗口載入並顯示指定url中的文檔;
replace()也類似,但它在載入新文檔之前會從瀏覽歷史中把當前文檔刪除。如果不刪除,「後退」按鈕會把瀏覽器帶回到原始文檔;
reload()方法可以讓瀏覽器重新載入當前文檔。

跳轉到新的頁面更傳統的方法是把新url賦給location屬性,會立即跳轉到新頁面
上面講到的這些方法都可以使用相對路徑。

3. 瀏覽器歷史 history, back(), forward(), go()
Window對象的history屬性引用的是該窗口的History對象。History對象時用來把窗口的瀏覽歷史用文檔和文檔狀態列表的形式表示。出於安全考慮,腳本不能訪問已保存的url(如果允許,則任意腳本都可以窺探你的瀏覽歷史)。
History對象的back()和forward()方法與瀏覽器的後退和前進按鈕一樣。
Go()接受一個整數參數,在歷史列表中向前(正整數)或向後(負整數)跳過任意多個頁。

4. 對話框 alert(), confirm(), prompt()和showModelDialog()
Window對象提供了3個方法來向用戶顯示簡單的對話框。
alert()向用戶顯示一條消息並等待用戶關閉對話框。
confirm()也顯示一條信息,要求用戶點擊「確定」或「取消」按鈕,並返回一個布爾值。
prompt()也顯示一條消息,等待用戶輸入字元串,並返回那個字元串。

注意:這些對話框顯示的都是純文本,不是html格式的文本。只能使用空格,換行符和各種標點符號來格式化。而且,confirm和prompt都會阻塞,alert也會阻塞,但不總是這樣。

還有個更複雜的方法showModelDialog(),顯示一個包含html格式的模態對話框(阻塞的對話框),可以給他傳入參數,以及從對話框返回值。

5. 錯誤處理 onerror
Window對象的onerror屬性時一個事件處理程序,當未捕獲的異常傳播到調用棧上時就會調用它,並把錯誤消息輸出到瀏覽器的javascript控制台上。如果給這個屬性賦一個函數,那麼只要這個窗口發生了javascript錯誤就會調用該函數,即它成了窗口的錯誤處理程序。

Onerror處理程序是早期javascript的遺物,那時語言核心不包含try/catch異常處理語句,現代代碼很少使用它。

6. 作為window對象屬性的文檔元素
如果在html文檔中用id屬性來為元素命名,並且如果window對象本身沒有這個名字的屬性,window對象就會以id屬性的值來增加一個全局屬性,這個屬性指向表示文檔元素的htmlElement對象。比如,文檔包含一個<button id=」okay」 />元素,window對象沒有名為okay的屬性,則新增一個okay屬性,通過okay可以引用此button元素。
但是,有一個重要警告:如果window對象有此名字的屬性,就不能通過id來應用這個元素了,同樣,如果html文檔里包含一個id為「x」的元素,並且還在javascript代碼中聲明並賦值給全局變數x,那麼顯示聲明的變數會隱藏隱式的元素變數。

Id元素在文檔中必須是唯一的,兩個元素不能有相同的id,但是name屬性可以相同。

推薦閱讀文章

Bookmark the permalink ,來源:互聯網