window對象知識總結(jié)

摘要:Window 對象表示一個瀏覽器窗口或一個框架照筑。在客戶端 JavaScript 中缔俄,Window 對象是全局對象烙懦,所有的表達式都在當(dāng)前的環(huán)境中計算。也就是說昆烁,要引用當(dāng)前窗口根本不需要特殊的語法吊骤,可以把那個窗口的屬性作為全局變量來使用。

Window對象屬性

屬性名 屬性功能
closed 返回窗口是否已被關(guān)閉
defaultStatus 設(shè)置或返回窗口狀態(tài)欄中的默認(rèn)文本
document 對Document對象的只讀引用
history 對History對象的只讀引用
innerHeight 返回窗口的文檔顯示區(qū)域的搞丟
innerWidth 返回窗口的文檔顯示區(qū)域的寬度
length 設(shè)置或返回窗口中的框架數(shù)量
location 用于窗口或框架的Location對象
name 設(shè)置或返回窗口的名稱
Navigator 對Navigator對象的只讀引用
opener 返回對創(chuàng)建此窗口的窗口引用
outerheight 返回窗口的外部高度
outerwidth 返回窗口的外部寬度
pageXOffset 設(shè)置或返回當(dāng)前頁面相對于窗口顯示區(qū)左上角的X位置
pageYOffset 設(shè)置或返回當(dāng)前頁面相對于窗口顯示區(qū)左上角的Y位置
parent 返回父窗口
Screen 對Sreen對象的只讀引用
Self 返回對當(dāng)前窗口的引用静尼。等價于Window屬性
status 設(shè)置窗口狀態(tài)欄的文本
top 返回最頂層的先輩窗口
window window屬性等價于self屬性白粉,它包含了對窗口自身的引用

Window對象方法

對象名稱(-) 對象功能(-)
alert() 顯示帶有一段消息和一個確認(rèn)按鈕的警告框
blur() 把鍵盤焦點從頂層窗口移開
clearInterval() 取消由 setInterval() 設(shè)置的 timeout
close() 關(guān)閉瀏覽器窗口
confirm() 顯示帶有一段消息以及確認(rèn)按鈕和取消按鈕的對話框
createPopup() 創(chuàng)建一個 pop-up 窗口
focus() 把鍵盤焦點給予一個窗口
moveBy() 可相對窗口的當(dāng)前坐標(biāo)把它移動指定的像素
moveTo() 把窗口的左上角移動到一個指定的坐標(biāo)
open() 打開一個新的瀏覽器窗口或查找一個已命名的窗口
print() 打印當(dāng)前窗口的內(nèi)容
prompt() 顯示可提示用戶輸入的對話框
resizeBy() 按照指定的像素調(diào)整窗口的大小
resizeTo() 把窗口的大小調(diào)整到指定的寬度和高度
scrollBy() 按照指定的像素值來滾動內(nèi)容
scrollTo() 把內(nèi)容滾動到指定的坐標(biāo)
setInterval() 按照指定的周期(以毫秒計)來調(diào)用函數(shù)或計算表達式
setTimeout() 在指定的毫秒數(shù)后調(diào)用函數(shù)或計算表達式

Window對象描述

Window 對象表示一個瀏覽器窗口或一個框架。在客戶端JavaScript中茅郎, Window對象時全局對象蜗元,所有的表達式都在當(dāng)前的環(huán)境中計算。也就是說系冗,要引用當(dāng)前窗口根本不需要特殊的語法奕扣,可以把那個窗口的屬性作為你全局變量來用。例如掌敬,可以只寫document, 而不用window.document

同樣惯豆,可以把當(dāng)前窗口對象的方法當(dāng)做函數(shù)來使用,如只寫alert()奔害,而不必寫 Window.alert()
除了上面列出的屬性和方法楷兽,Window 對象還實現(xiàn)了核心 JavaScript 所定義的所有全局屬性和方法
Window 對象的 window 屬性和 self 屬性引用的都是它自己。當(dāng)你想明確地引用當(dāng)前窗口华临,而不僅僅是隱式地引用它時芯杀,可以使用這兩個屬性。除了這兩個屬性之外雅潭,parent 屬性揭厚、top 屬性以及 frame[] 數(shù)組都引用了與當(dāng)前 Window 對象相關(guān)的其他 Window 對象。

要引用窗口中的一個框架扶供,可以使用如下語法:

  • frame[i] //當(dāng)前窗口的框架
  • self.frame[i] //當(dāng)前窗口的框架
  • w.frame[i] //窗口 w 的框架

要引用一個框架的父窗口(或父框架)筛圆,可以使用下面的語法:

  • parent //當(dāng)前窗口的父窗口
  • self.parent //當(dāng)前窗口的父窗口
  • w.parent //窗口 w 的父窗口

要從頂層窗口含有的任何一個框架中引用它,可以使用如下語法:

  • top //當(dāng)前框架的頂層窗口
  • self.top //當(dāng)前框架的頂層窗口
  • f.top //框架 f 的頂層窗口

新的頂層瀏覽器窗口由方法 Window.open() 創(chuàng)建椿浓。當(dāng)調(diào)用該方法時太援,應(yīng)把 open() 調(diào)用的返回值存儲在一個變量中闽晦,然后使用那個變量來引用新窗口。新窗口的 opener 屬性反過來引用了打開它的那個窗口
一般來說提岔,Window 對象的方法都是對瀏覽器窗口或框架進行某種操作;而 alert() 方法仙蛉、confirm() 方法和 prompt 方法則不同,它們通過簡單的對話框與用戶進行交互唧垦。

全局的window對象

JavaScript中的任何一個全局函數(shù)或變量都是window的屬性

<script type="text/javascript">
    var name="aaaa";
    document.write(window.name);
</script>

window與self對象

self對象與window對象完全相同捅儒,self通常用于確認(rèn)就是在當(dāng)前的窗體內(nèi)

<script type="text/javascript">
    document.write(window == self);      //必須相等液样,永遠都相等
  document.write(window.Top == window.self);  //判斷當(dāng)前框架是否是主框架
</script>

window振亮、self、window.self三者是等價的

window的子對象

window的主對象主要有:

  • JavaScript document 對象
  • JavaScript frames 對象
  • JavaScript history 對象
  • JavaScript location 對象
  • JavaScript navigator 對象
  • JavaScript screen 對象

window函數(shù)索引(僅對IE有效)

窗體控制函數(shù):

moveBy() 函數(shù):從當(dāng)前位置水平移動窗體x個像素鞭莽,垂直移動窗體y個像素坊秸,x為負(fù)數(shù),將向左移動窗體澎怒,y為負(fù)數(shù)褒搔,將向上移動窗體

moveTo() 函數(shù):移動窗體左上角到相對于屏幕左上角的(x,y)點,當(dāng)使用負(fù)數(shù)做為參數(shù)時會把窗體移出屏幕的可視區(qū)域

resizeBy() 函數(shù):相對窗體當(dāng)前的大小喷面,寬度調(diào)整w個像素星瘾,高度調(diào)整h個像素。如果參數(shù)為負(fù)值惧辈,將縮小窗體琳状,反之?dāng)U大窗體。

resizeTo() 函數(shù):把窗體寬度調(diào)整為w個像素盒齿,高度調(diào)整為h個像素

<body>
    <input type="button" id="btn1" value="先設(shè)置窗體固定大心畛选!" onclick="window.resizeTo(500,500);" />
    <input type="button" id="btn2" value="再縮小10像素边翁!" onclick="window.resizeBy(-10,-10);" />
    <input type="button" id="btn2" value="上翎承!" onclick="window.moveBy(0,-5);" />
    <input type="button" id="btn2" value="下!" onclick="window.moveBy(0, 5);" />
    <input type="button" id="btn2" value="左符匾!" onclick="window.moveBy(-5, 0);" />
    <input type="button" id="btn2" value="右叨咖!" onclick="window.moveBy(5, 0);" />
    <input type="button" id="btn2" value="距離左上角左邊100像素,頂部200像素" onclick="window.moveTo(100, 200);" />
</body>

窗體滾動軸控制函數(shù)

scrollTo() 函數(shù):在窗體中如果有滾動條啊胶,將橫向滾動條移動到相對于窗體寬度為x個像素的位置甸各,將縱向滾動條移動到相對于窗體高度為y個像素的位置。

scrollBy() 函數(shù):如果有滾動條创淡,將橫向滾動條移動到相對于當(dāng)前橫向滾動條的x個像素的位置(就是向左移動x像素)痴晦,將縱向滾動條移動到相對于當(dāng)前縱向滾動條高度為y個像素的位置(就是向下移動y像素)。
注意區(qū)別琳彩,一個是相對當(dāng)前窗口誊酌,一個是相當(dāng)現(xiàn)在滾動條的位置部凑。

<div style="height:150%; width:150%; background-color:#ddd">
    <input type="button" id="btn1" value="移動滾動條!" onclick="window.scrollTo(100,100);" />  //相當(dāng)于設(shè)置絕對位置
    <input type="button" id="btn1" value="移動滾動條碧浊!" onclick="window.scrollBy(100,100);" />  //相當(dāng)于累加
</div>

窗體焦點控制函數(shù):

  • focus() 函數(shù):使窗體或空間獲得焦點
  • blur() 函數(shù):使窗體或控件失去焦點
<div>
    <input type="button" value="獲得焦點" onclick="document.getElementById('testInput').focus()" />
    <input type="button" value="失去焦點" onclick="document.getElementById('testInput').blur()" />
    <input type="text" value="text" id="testInput" onblur="alert('我已失去焦點')" />
</div>

新建窗體函數(shù):

  • open() 函數(shù):打開(彈出)一個新的窗體
  • close() 函數(shù):關(guān)閉窗體
  • opener 屬性:通過opener可以實現(xiàn)跨窗體之間的通訊涂邀,但是要保證是在同一域名下,而且一個窗體要包含另一個窗體的opener

格式:window.open(url, name, features, replace);

open函數(shù)參數(shù)說明:

  • url -- 要載入窗體的URL
  • name -- 新建窗體的名稱(也可以是HTML target屬性的取值箱锐,目標(biāo))
  • features -- 代表窗體特性的字符串比勉,字符串中每個特性使用逗號分隔
  • replace -- 一個布爾值,說明新載入的頁面是否替換當(dāng)前載入的頁面驹止,此參數(shù)通常不用指定浩聋。

open方法示例

  <a href="2.html" target="2">在新窗口打開連接</a>
  <a href="#" onclick="window.open('http://www.google.com','2');">在已建立連接的頁面打開新地址</a>

首先使用普通HTML鏈接打開一個頁面(target名為dreamdu),之后使用open函數(shù)打開另一個頁面臊恋,瀏覽器首先要查找是否有名稱為dreamdu的窗體衣洁,如果有,就在這個窗體中加載open的地址抖仅。

經(jīng)過設(shè)置的open

 window.open ('page.html', 'newwindow', 'height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no') 

彈窗方法

方法一:<body onload="openwin()"> 瀏覽器讀頁面時彈出窗口坊夫;  
方法二:<body onunload="openwin()"> 瀏覽器離開頁面時彈出窗口;
參數(shù)名稱 類型 說明
height Number 設(shè)置窗體的高度撤卢,不能小于100
left Number 說明創(chuàng)建窗體的左坐標(biāo)环凿,不能為負(fù)值
location Boolean 窗體是否顯示地址欄,默認(rèn)值為no
resizable Boolean 窗體是否允許通過拖動邊線調(diào)整大小放吩,默認(rèn)值為no
scrollable Boolean 窗體中內(nèi)部超出窗口可視范圍時是否允許拖動智听,默認(rèn)值為no
toolbar Boolean 窗體是否顯示工具欄,默認(rèn)值為no
top Number 說明創(chuàng)建窗體的上坐標(biāo)屎慢,不能為負(fù)值
status Boolean 窗體是否顯示狀態(tài)欄瞭稼,默認(rèn)值為no
width Number 創(chuàng)建窗體的寬度,不能小于100

open函數(shù)第三個參數(shù)features說明

參數(shù)名稱 類型 說明
height Number 設(shè)置窗體的高度腻惠,不能小于100
left Number 說明創(chuàng)建窗體的左坐標(biāo)环肘,不能為負(fù)值
location Boolean 窗體是否顯示地址欄,默認(rèn)值為no
resizable Boolean 窗體是否允許通過拖動邊線調(diào)整大小集灌,默認(rèn)值為no
scrollable Boolean 窗體中內(nèi)部超出窗口可視范圍時是否允許拖動悔雹,默認(rèn)值為no
toolbar Boolean 窗體是否顯示工具欄,默認(rèn)值為no
top Number 說明創(chuàng)建窗體的上坐標(biāo)欣喧,不能為負(fù)值
status Boolean 窗體是否顯示狀態(tài)欄腌零,默認(rèn)值為no
width Number 創(chuàng)建窗體的寬度,不能小于100

特性字符串中的每個特性使用逗號分隔唆阿,每個特性之間不允許有空格益涧。
window.open函數(shù)新建立窗體后會返回新建窗體的window對象,通過此對象可以控制窗體(移動驯鳖,改變大小闲询,關(guān)閉)

close函數(shù)

<input type="button" value="關(guān)閉已經(jīng)打開的窗體久免!" onclick="window.close();" />

self.close();配合上setTimeout()可以實現(xiàn),打開窗口定時關(guān)閉的效果

對話框函數(shù)

  • alert()函數(shù):彈出消息對話框(對話框中有一個OK按鈕)
  • confirm() 函數(shù):彈出消息對話框(對話框中包含一個OK按鈕與Cancel按鈕);confirm()消息對話框是排它的扭弧,也就是在用戶點擊對話框的按鈕前阎姥,不能進行任何其它操作
if(confirm("確定跳大?")){
    alert("果斷跳大");
}else{
    alert("猥瑣打錢");
}

prompt() 函數(shù):彈出消息對話框(對話框中包含一個OK按鈕鸽捻、Cancel按鈕與一個文本輸入框);函數(shù)有兩個參數(shù)
str1 -- 要顯示在消息對話框中的文本呼巴,不可修改
str2 -- 文本框中的內(nèi)容,可以修改

var sResult=prompt("請在下面輸入你的姓名", "aaa");
if(sResult!=null){
    alert(sResult + "已經(jīng)超越神的殺戮");
}else{
    alert("無名氏已經(jīng)超越神的殺戮");
}

時間等待與間隔函數(shù):

  • setTimeout() 函數(shù)/clearTimeout() 函數(shù):在指定的時間后調(diào)用函數(shù)
  • 語法:
    setTimeout(fun,time);  fun:函數(shù)體或函數(shù)名御蒲,time指定時間衣赶,單位為毫秒
    clearTimeout(id);  取消指定的setTimeout函數(shù)將要執(zhí)行的代碼
setTimeout(function () {
    document.write("隔3秒后觸發(fā)");   
}, 3000)    //在3秒后輸出
setTimeout(fun1, 5000);     //在5秒后輸出
function fun1() {
    document.write("函數(shù)名的方式5秒后觸發(fā)");
}
  • setInterval() 函數(shù)/clearInterval() 函數(shù):在間隔指定的事件后重復(fù)調(diào)用函數(shù)
  • 語法:
    setInterval(fun1,time)  fun:函數(shù)體或函數(shù)名,time指定的時間删咱,單位為毫秒屑埋。會返回一個值,這個值是統(tǒng)計該函數(shù)的個數(shù)用的豪筝,第一個是1痰滋,第二個就是2,指明是第幾個setInterval函數(shù)续崖。
    clearInterval(value) value:setInterval()函數(shù)返回的值敲街,根據(jù)這個值可以停止setInterval()的重復(fù)
var i = 0;
var h = setInterval(function () {
    document.write("3秒輸出一次<br/>");
    i++;
    if (i >= 3) {
       clearInterval(h);
        document.write("停止輸出");
    }
}, 3000);

注意,javascript是單線程的严望,因此多艇,這個定時函數(shù)實際上是通過插入執(zhí)行隊列的方式來實現(xiàn)。
如下面的代碼

function fn() { 
  setTimeout(function(){alert('can you see me?');},1000); 
  while(true) {} 
} 

alert();永遠都不會執(zhí)行像吻,因為線程一直被死循環(huán)占用了

window.location子對象

解析URL對象location:location對象的屬性有:href,protocal,host,hostname,port,pathname,search,hash

document.write(location.href + "<br/>");        // http://localhost:4889/javascriptTest.html
document.write(location.protocol + "<br/>");    // http:
document.write(location.host + "<br/>");        // localhost:4889
document.write(location.hostname + "<br/>");    // localhost
document.write(location.port + "<br/>");        // 4889
document.write(location.pathname + "<br/>");    // /javascriptTest.html
document.write(location.search + "換行<br/>");  //http://localhost:4889/javascriptTest.html?id=1&name=張三 如果路徑是這樣峻黍,則輸出  ?id=1&name=%E5%BC%A0%E4%B8%89
document.write(location.hash);                  //http: //localhost:4889/javascriptTest.html#kk=你好?id=1&name=張三 如果路徑是這樣,則輸出  #kk=你好?id=1&name=張三

載入新文檔

  • location.reload()  重新加載頁面
  • location.replace()  本窗口載入新文檔
  • location.assign()  本窗口載入新文檔
  • location = "http://www.baidu.com"  //跳轉(zhuǎn)到指定網(wǎng)址
  • location = "search.html"        //相對路徑跳轉(zhuǎn)
  • location = "#top"      //跳轉(zhuǎn)到頁面頂部

瀏覽歷史

  • History()對象的back()與forward()  與瀏覽器的“后退”拨匆,"前進"功能一樣姆涩。
  • history.go(-2);  后退兩個歷史記錄

瀏覽器屏幕信息

  • navigator.appName  Web瀏覽器全稱
  • navigator.appVersion  Web瀏覽器廠商和版本的詳細字符串
  • navigator.userAgent  客戶端絕大部分信息
  • navagator.platform   瀏覽器運行所在的操作系統(tǒng)
document.write(navigator.userAgent + "<br/>"); // Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
document.write(navigator.appName + "<br/>");   //Netscape
document.write(navigator.appVersion + "<br/>"); //5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) document.write(navigator.platform);             //Win32

窗口關(guān)系

  • parent == self  只有頂級窗口才返回true
  • parent和top屬性允許腳本引用它的窗體的祖先,通常窗體是通過元素創(chuàng)建的惭每,可以用來獲取頂級窗口

event事件對象

最有用的兩個操作:阻止事件冒泡骨饿。有時return false;不管用,這個或許就管用了

//IE:
window.event.cancelBubble = true;//停止冒泡
window.event.returnValue = false;//阻止事件的默認(rèn)行為

//Firefox:
event.preventDefault();// 取消事件的默認(rèn)行為  
event.stopPropagation(); // 阻止事件的傳播
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末台腥,一起剝皮案震驚了整個濱河市宏赘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌黎侈,老刑警劉巖察署,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異峻汉,居然都是意外死亡贴汪,警方通過查閱死者的電腦和手機储藐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘶是,“玉大人钙勃,你說我怎么就攤上這事∧衾” “怎么了辖源?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長希太。 經(jīng)常有香客問我克饶,道長,這世上最難降的妖魔是什么誊辉? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任矾湃,我火速辦了婚禮,結(jié)果婚禮上堕澄,老公的妹妹穿的比我還像新娘邀跃。我一直安慰自己,他們只是感情好蛙紫,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布拍屑。 她就那樣靜靜地躺著,像睡著了一般坑傅。 火紅的嫁衣襯著肌膚如雪僵驰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天唁毒,我揣著相機與錄音蒜茴,去河邊找鬼。 笑死浆西,一個胖子當(dāng)著我的面吹牛粉私,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播室谚,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼毡鉴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了秒赤?” 一聲冷哼從身側(cè)響起猪瞬,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎入篮,沒想到半個月后陈瘦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡潮售,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年痊项,在試婚紗的時候發(fā)現(xiàn)自己被綠了锅风。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡鞍泉,死狀恐怖皱埠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咖驮,我是刑警寧澤边器,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站托修,受9級特大地震影響忘巧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜睦刃,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一砚嘴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涩拙,春花似錦际长、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至郁轻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間文留,已是汗流浹背好唯。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留燥翅,地道東北人蹲堂。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓吩跋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子榆浓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容