計時器
setTimeout()和setInterval()可以用來注冊在指定的時間之后單詞或重復調用的函數。都是客戶端JavaScript中重要的全局函數。
- setTimeout()方法用來實現一個函數在指定的毫秒數之后運行,并可以返回一個值;
- 1中返回的值可以傳遞給clearTimeout()用于取消這個函數的執行;
- setInterval()會在指定毫秒數的這個間隔內重復執行,同時也可以返回一個值;
- 3中返回的值可以傳遞給clearInterval()用于取消后續函數的調用。
注意:如果以0毫秒的超時時間來調用setTimeout(),那么指定的函數不會馬上執行,而是先放到隊列中,等到前面處于等待狀態的事件處理程序執行完成后,再“立即”調用它。
瀏覽器定位和導航
Window對象的location屬性引用的是Location對象,表示該窗口中當前顯示的文檔的URL。
window.location === document.location //總是返回true
解析URL
- Location對象的href屬性是一個字符串,包含URL的完整文本。Location對象的toString()方法返回href屬性的值。
- 該對象還有其他屬性——protocol,host,hostname,port,pathname和search,分別表示URL的各個部分。它們稱為“URL分解”屬性,同時被Link對象(/<a/>和<area>元素創建)支持。
- hash屬性返回URL中的“片段標識符”部分
- search屬性返回問號之后的URL
提取URL中參數.png
載入新的文檔
- Location對象的assign()方法可以使窗口載入并顯示你指定的URL中的文檔。
- replace()方法在載入新文檔之前會從瀏覽歷史中把前文檔刪除。
注意:replace()的參數是一個相對URL。
- reload()方法可以讓瀏覽器重新載入當前文檔。
傳統方法:
location = "http://www.baidu.com";
location = "page.html";
location = "#top"; //跳轉到文檔的頂部
location.search = "?page" + (pagenum + 1);
瀏覽歷史
window對象的history屬性引用的是該窗口的History對象。
- History對象的back()和forward()方法與瀏覽器的“后退”和“前進”按鈕一樣。go()接受一個整數參數,可以在歷史列表中向前(正參數)或向后(負參數)跳過任意多個頁面。
瀏覽器和屏幕信息
Navigator對象
window對象的Navigator屬性引用的是包含瀏覽器廠商和版本信息的Navigator對象。該對象有4個屬性用于提供關于運行中的瀏覽器的版本信息:
- appName:Web瀏覽器的全稱。
- appVersion:該屬性通常以數字開始,并跟著包含瀏覽器廠商和版本信息的詳細字符串。
- userAgent:瀏覽器在它的USER-AGENT HTTP頭部中發送的字符串。
- platform:在其中運行瀏覽器的操作系統(并且可能是硬件)的字符串。
- onLine:navigator.onLine屬性(如果存在)表示瀏覽器當前是否連接到網絡。
- geolocation:Geolocation對象定義用于確定用戶地理位置信息的接口。
- JavaEnabled():一個非標準的方法,當瀏覽器可以運行Java小程序時返回true。
- cookieEnable():非標準方法。如果瀏覽器可以保存永久的cookie時,返回true。
Screen對象
window對象的screen屬性引用的是Screen對象。它提供有關窗口顯示的大小和可用的顏色數量的信息。
對話框
- alert()向用戶顯示一條消息并等待用戶關閉對話框。
- confirm()也顯示一條消息,要求用戶單擊“確定”或“取消”按鈕,并返回一個布爾值。
- prompt()同樣顯示一條消息,等待用戶輸入字符串,并返回那個字符串。
錯誤處理
window對象的onerror屬性是一個事件處理程序,當未捕獲的異常傳播到調用棧上時就會調用它,并把錯誤消息輸出到瀏覽器的JavaScript控制臺上。
作為window對象屬性的文檔元素
多窗口和窗體
一個web瀏覽器窗口可能在桌面上包含多個標簽頁,每一個標簽頁都是獨立的“瀏覽器上下文”,每一個上下文都有獨立的window對象,而且相互之間互不干擾。
打開和關閉窗口
window.open()載入指定的URL到新的或已存在的窗口中,并返回代表那個窗口的window對象。他有四個可選參數:
- 第一個是在新窗口中顯示的文檔的URL。如果是空,則打開about:blank
- 第二個是新打開窗口的名字。如果是已存在窗口的名字,會直接使用已存在的窗口。如果省略該參數,則使用“_blank”。
- 第三個是一個以逗號分隔的列表,包含大小和各種屬性,用以表示新窗口是如何打開的。
- 第四個只在第二個參數命名的是一個存在的窗口時才有用。它是一個布爾值,聲明了由第一個參數指定的URL是應用替換掉窗口瀏覽歷史的當前條目(true),還是應該在窗口瀏覽歷史中創建一個新的條目(false),后者是默認的設置。
close()將關閉一個窗口。
window.close();
窗體之間的關系
parent == self; //只有頂級窗口才會返回true
交互窗口中的JavaScript
每個窗口和窗體都是自身的JavaScript執行上下文,一window作為全局對象
-
兩個并列的窗體想調用另一方的函數,需將這個函數作為父窗體的子窗體來調用。
jiaohu.png