window 對(duì)象
window對(duì)象表示一個(gè)瀏覽器的一個(gè)實(shí)例。瀏覽器中第喳,window對(duì)象有兩個(gè)角色:
- 訪問(wèn)瀏覽器窗口的一個(gè)接口
- ECMAScript中的Global對(duì)象
- 全局作用域
window對(duì)象作為全局作用域時(shí),里面的所有變量和函數(shù)都會(huì)變?yōu)閣indow對(duì)象的屬性和方法曲饱。
有以下幾點(diǎn)需要注意:
- 如果直接定義全局變量,則次變量不能當(dāng)做window對(duì)象的屬性刪除
var a = 1; delete window.a; // false // 上面這個(gè)舉動(dòng)在IE9以下瀏覽器中會(huì)報(bào)錯(cuò)
- 如果直接在全局中賦值給變量一個(gè)不存在的變量會(huì)產(chǎn)生錯(cuò)誤楔敌,而把這個(gè)變量作為window對(duì)象賦值則不會(huì)產(chǎn)生錯(cuò)誤。
var a = b; alert(a); // 此舉動(dòng)會(huì)讓瀏覽器報(bào)錯(cuò) var a = window.b; alert(a); // undefined
- frame框架窗口中的window對(duì)象
如果在頁(yè)面中包含框架卵凑,那么每個(gè)框架中都會(huì)有自己的一個(gè)window對(duì)象。
如何獲取框架中的一個(gè)frame頁(yè)面的中的全局對(duì)象:
舉個(gè)栗子:如果在topFrame頁(yè)面中定義一個(gè)全局變量: var a = 1;
伙判,則此變量為window.frames[0]
對(duì)象的屬性值漫。
另外,最外層框架不是中的全局對(duì)象不再是window杨何,而是top。
- 窗口位置
獲取window對(duì)象的位置(這里的window對(duì)象是作為一個(gè)瀏覽器窗口):
- 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) 相對(duì)瀏覽器窗口移動(dòng)
- moveBy(x, y) 相對(duì)當(dāng)前移動(dòng)
注意:這兩個(gè)方法只能相對(duì)于瀏覽器窗口贸诚,不適用于框架厕吉。另外此方法只能在IE中可以直接改變窗口位置,其他瀏覽器則只能在window.open()中打開(kāi)的窗口中使用头朱。
- 窗口大小
獲取瀏覽器窗口大小:
- innerWidth 和 innerHeight 表示瀏覽器視口區(qū)域的寬度和高度
- outerWidth 和 outerHeight 表示瀏覽器整個(gè)窗口的寬度和高度
以上window對(duì)象屬性只是適用于 IE9+ 及其他所有瀏覽器项钮,如果兼容IE8及以下,可以利用以下屬性:
- document.documentElement.clientWidth 和 document.documentElement.clientHeight 表示視口區(qū)域大小鳖敷,適用于各主流瀏覽器的標(biāo)準(zhǔn)模式
- document.body.clientWidth 和 document.body.clientHeight 適用于IE6中的混雜模式中獲取視口區(qū)域大小,現(xiàn)在幾乎已經(jīng)廢棄
自定義修改窗口大卸狻:
- resizeTo(w ,h) 絕對(duì)大小
- resizeBy(w, h) 相對(duì)原來(lái)增加或者減少
注意:與moveTo,moveBy方法的特性相同
- 窗口導(dǎo)航
-
window.open(url, frame, ...) 打開(kāi)一個(gè)窗口恃鞋,URL參數(shù)后面的參數(shù)可以是框架名稱亦歉、控制窗口特性如_self、 _parent肴楷、 _top荠呐、 _blank 等赛蔫。
舉個(gè)栗子:
var newWin = window.open("https://www.baidu.com/", "_black", "height=400,width=400,top=10,left=10,resizable=yes");
表示打開(kāi)了一個(gè)400 X 400 像素泥张,距離上左10像素的可以改變其大小的瀏覽器窗口。
而且在新窗口中我們終于可以沒(méi)有顧忌的適用moveTo和resizeTo這兩個(gè)屬性了:// 調(diào)整大小 newWin.resizeTo(500, 500); // 移動(dòng)位置 newWin.moveTo(100, 100);
newWin.close(); 關(guān)閉打開(kāi)的這個(gè)窗口
- setTimeout 和 setInterval
-
setTimeout() 超時(shí)器
setTimeout(func,time);
參數(shù)為執(zhí)行的代碼(最好是一個(gè)匿名函數(shù))和一個(gè)毫秒數(shù)表示的時(shí)間渗钉。
舉個(gè)栗子:setTimeout(function() { alert("時(shí)間到啦"); }, 1000); // 一秒后彈出 時(shí)間到啦钞钙。
清除超時(shí)器:在設(shè)置超時(shí)器的時(shí)候鳄橘,創(chuàng)建一個(gè)變量去保存這個(gè)超時(shí)器的ID
var id = setTimeout(function() { alert("時(shí)間到啦"); }, 1000); clearTimeout(id); // 此處不會(huì)有任何動(dòng)作發(fā)生芒炼,因?yàn)樵?s內(nèi),超時(shí)器已經(jīng)被清除
-
setInterval() 定時(shí)器
使用方式與超時(shí)器相同本刽,但是不同的是每過(guò)一段時(shí)間都會(huì)調(diào)用要執(zhí)行的代碼。
舉個(gè)栗子:
setInterval(function() { console.log("過(guò)去了一秒"); }, 1000); // 沒(méi)一秒都是輸出一句話 過(guò)去了一秒
清除定時(shí)器
和超時(shí)器要一樣,定時(shí)器的調(diào)用也會(huì)返回一個(gè)id世囊,此時(shí)需要clearInterval()來(lái)清除。
-
- 各種彈框
- alert() 僅僅是簡(jiǎn)單的彈出消息株憾,參數(shù)為要彈出的內(nèi)容。
- confirm() 參數(shù)也是要彈出的內(nèi)容墙歪,但是包含兩個(gè)按鈕 確定 和 取消 。點(diǎn)擊確定后函數(shù)會(huì)返回true虹菲,點(diǎn)擊取消后函數(shù)會(huì)返回false掉瞳。
- prompt() 參數(shù)除了要彈出的內(nèi)容外還有一個(gè)可選參數(shù)毕源,為對(duì)話框中的值,點(diǎn)擊確定后會(huì)返回對(duì)話框中的內(nèi)容址愿。
最近工作繁忙冻璃,如有出錯(cuò)响谓,還請(qǐng)各位讀者大大指出省艳!