window 對象
window對象表示一個瀏覽器的一個實例。瀏覽器中,window對象有兩個角色:
- 訪問瀏覽器窗口的一個接口
- ECMAScript中的Global對象
- 全局作用域
window對象作為全局作用域時,里面的所有變量和函數都會變為window對象的屬性和方法。
有以下幾點需要注意:
- 如果直接定義全局變量,則次變量不能當做window對象的屬性刪除
var a = 1; delete window.a; // false // 上面這個舉動在IE9以下瀏覽器中會報錯
- 如果直接在全局中賦值給變量一個不存在的變量會產生錯誤,而把這個變量作為window對象賦值則不會產生錯誤。
var a = b; alert(a); // 此舉動會讓瀏覽器報錯 var a = window.b; alert(a); // undefined
- frame框架窗口中的window對象
如果在頁面中包含框架,那么每個框架中都會有自己的一個window對象。
如何獲取框架中的一個frame頁面的中的全局對象:
舉個栗子:如果在topFrame頁面中定義一個全局變量: var a = 1;
,則此變量為window.frames[0]
對象的屬性。
另外,最外層框架不是中的全局對象不再是window,而是top。
- 窗口位置
獲取window對象的位置(這里的window對象是作為一個瀏覽器窗口):
- screenLeft 和 screenTop 。 IE、Sanfari、Opera、Chrome 支持
- screenX 和 screenY 。 Firefox支持
為了兼容所有瀏覽器,可以這樣定義窗口位置:
var leftPos = (typeof window.screenLeft == "number") ? window.screenLeft : window.screenX;
var topPos = (typeof window.screenTop == "number") ? window.screenTop : window.screenY;
自定義修改窗口位置:
- moveTo(x, y) 相對瀏覽器窗口移動
- moveBy(x, y) 相對當前移動
注意:這兩個方法只能相對于瀏覽器窗口,不適用于框架。另外此方法只能在IE中可以直接改變窗口位置,其他瀏覽器則只能在window.open()中打開的窗口中使用。
- 窗口大小
獲取瀏覽器窗口大小:
- innerWidth 和 innerHeight 表示瀏覽器視口區域的寬度和高度
- outerWidth 和 outerHeight 表示瀏覽器整個窗口的寬度和高度
以上window對象屬性只是適用于 IE9+ 及其他所有瀏覽器,如果兼容IE8及以下,可以利用以下屬性:
- document.documentElement.clientWidth 和 document.documentElement.clientHeight 表示視口區域大小,適用于各主流瀏覽器的標準模式
- document.body.clientWidth 和 document.body.clientHeight 適用于IE6中的混雜模式中獲取視口區域大小,現在幾乎已經廢棄
自定義修改窗口大小:
- resizeTo(w ,h) 絕對大小
- resizeBy(w, h) 相對原來增加或者減少
注意:與moveTo,moveBy方法的特性相同
- 窗口導航
-
window.open(url, frame, ...) 打開一個窗口,URL參數后面的參數可以是框架名稱、控制窗口特性如_self、 _parent、 _top、 _blank 等。
舉個栗子:
var newWin = window.open("https://www.baidu.com/", "_black", "height=400,width=400,top=10,left=10,resizable=yes");
表示打開了一個400 X 400 像素,距離上左10像素的可以改變其大小的瀏覽器窗口。
而且在新窗口中我們終于可以沒有顧忌的適用moveTo和resizeTo這兩個屬性了:// 調整大小 newWin.resizeTo(500, 500); // 移動位置 newWin.moveTo(100, 100);
newWin.close(); 關閉打開的這個窗口
- setTimeout 和 setInterval
-
setTimeout() 超時器
setTimeout(func,time);
參數為執行的代碼(最好是一個匿名函數)和一個毫秒數表示的時間。
舉個栗子:setTimeout(function() { alert("時間到啦"); }, 1000); // 一秒后彈出 時間到啦。
清除超時器:在設置超時器的時候,創建一個變量去保存這個超時器的ID
var id = setTimeout(function() { alert("時間到啦"); }, 1000); clearTimeout(id); // 此處不會有任何動作發生,因為在1s內,超時器已經被清除
-
setInterval() 定時器
使用方式與超時器相同,但是不同的是每過一段時間都會調用要執行的代碼。
舉個栗子:
setInterval(function() { console.log("過去了一秒"); }, 1000); // 沒一秒都是輸出一句話 過去了一秒
清除定時器
和超時器要一樣,定時器的調用也會返回一個id,此時需要clearInterval()來清除。
-
- 各種彈框
- alert() 僅僅是簡單的彈出消息,參數為要彈出的內容。
- confirm() 參數也是要彈出的內容,但是包含兩個按鈕 確定 和 取消 。點擊確定后函數會返回true,點擊取消后函數會返回false。
- prompt() 參數除了要彈出的內容外還有一個可選參數,為對話框中的值,點擊確定后會返回對話框中的內容。
最近工作繁忙,如有出錯,還請各位讀者大大指出!