JavaScript面向物件之Windows物件
JavaScript之Window物件
首先我們先了解一個概念:事件。
事件,就是把一段程式碼設定好,滿足條件時觸發。或者說,事件是可以被 JavaScript 偵測到的行為。
網頁中每個元素都可以觸發JavaScript事件。
我們先來看一個簡單的事件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>無標題文件</title> </head> <body> <input type="button" value="點選" onClick="dianJi()"/> </body> </html> <script> function dianJi(){ alert("這是函式dianJi"); } </script>
我們可以使用<input>標籤的onClick屬性來呼叫設定好的函式dianJi(),這就是一個簡單的點選事件。
DOM物件之Windows物件
DOM物件:當網頁被載入時,瀏覽器會建立頁面的文件物件模型(Document Object Model)。
HTML DOM 模型被構造為物件的樹。
開啟網頁後,首先看到的是瀏覽器視窗,即頂層的window物件。
其次,看到的是網頁文件的內容,即document文件。
我們先來看一下Window物件。
Window有屬性和方法:
屬性(值或者子物件): opener:開啟當前視窗的源視窗,如果當前視窗是首次啟動瀏覽器開啟的,則opener是null,可以利用這個屬性來關閉源視窗。
方法(函式): 事件(事先設定好的程式,被觸發):
window.open("第一部分","第二部分","第三部分","第四部分");
特徵引數:
第一部分:寫要開啟的頁面地址
第二部分:開啟的方式,_blank 是在新視窗開啟 _self
第三部分:控制開啟的視窗,可以寫多個,用空格隔開
toolbar=no新開啟的視窗無工具條
menubar=no無選單欄
status=no無狀態列
width=100 height=100 寬度高度
left=100 開啟的視窗距離左邊多少距離
resizable=no視窗大小不可調
scrollbars=yes 出現滾動條
location=yes 有位址列
以上屬性不常用,且多不相容
返回值:新開啟的視窗物件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<input type="button" value="點選" onClick="show()"/>
</body>
</html>
<script>
function show(){
window.open("http://www.baidu.com","_blank","toolbar=no menubar=no status=no width=300 height=500 left=100 resizable=no scrollbars=yes location=yes ");
}
</script>
開啟的視窗還可以儲存在一個變數中,並用另一個事件關閉,用close():關閉指定的視窗
close():關閉指定的視窗
window.close():關閉當前視窗 w.close():關閉w視窗
關閉多個子視窗:放在陣列中的視窗:w[i].close();
關閉開啟當前視窗的源視窗
window.opener.close();
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<input type="button" value="點選" onClick="show()"/>
<input type="button" value="關閉" onclick="guanBi()" />
</body>
</html>
<script>
var w;
function show(){
w = window.open("http://www.baidu.com","_blank");
}
function guanBi(){
w.close();
}
</script>
在以上頁面中我們可以通過點選關閉按鈕關閉開啟的頁面。
這樣開啟可以多次開啟,我們還可以通過if判斷設定只能開啟一次:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<input type="button" value="點選" onClick="show()"/>
<input type="button" value="關閉" onclick="guanBi()" />
</body>
</html>
<script>
var w;
function show(){
if(w==null){
w = window.open("http://www.baidu.com","_blank");
}
}
function guanBi(){
w.close();
}
</script>
這裡用一個if語句,判斷w的值是否為空,開啟一個視窗之後w的值就不為空了,之後再點選滑鼠呼叫此函式則不執行開啟新視窗。
我們還可以用陣列的push()方法將所有開啟的頁面存到一個數組裡,然後用close()方法一起關閉:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<input type="button" value="點選" onClick="show()"/>
<input type="button" value="關閉" onclick="guanBi()" />
</body>
</html>
<script>
var w=new Array();
function show(){
w.push(window.open("http://www.baidu.com","_blank"));
}
function guanBi(){
for(i=0;i<w.length;i++){
w[i].close();
}
}
</script>
間隔:
window.setInterval("要執行的程式碼",間隔的毫秒數) window.clearInterval(間隔的id); 迴圈一次之後用來清除隔幾秒執行的程式碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<body>
<input type="button" value="開始" onClick="start()" />
<input type="button" value="停止" onClick="end()" />
</body>
</html>
<script>
function show(){
alert("hello");
}
var id;
function start(){
id = window.setInterval("show()",1000);
}
function end(){
window.clearInterval(id);
}
</script>
在window.setInterval("", )中,前面是間隔時間執行的程式碼,後面是間隔的時間,單位是毫秒。
延遲:
window.setTimeout("要執行的程式碼",延遲的毫秒數) window.clearTimeout(延遲的id);清除setTimeout,一般延遲執行較為常用。
window.setTimeout("show()",10000);
window.clearTimeout();
使用延遲來做到間隔的效果:
function show(){
alert("hello");
window.setTimeout("show()",1000);
}
show();
使用類似遞迴的方式,在函式中自己呼叫自己,從而使延遲不斷地執行,來使用延遲做到間隔的效果。
頁面操作:
window.moveTo(x,y); 移動頁面
window.resizeTo(寬,高); 調整頁面
window.scrollTo(x,y);滾動頁面至哪裡
以上方法多不相容。
模態對話方塊
模態:開啟對話方塊之後,對話方塊之後的內容是不能操作的。
window.showModalDialog("url","向目標對話方塊傳的值","視窗特徵引數") 開啟模態對話方塊
模態對話方塊必須關掉才能對後端操作。 模組對話方塊和視窗的區別是永遠置頂。
特徵引數:用分號隔開,畫素大小用px。dialogHeight,dialogWidth,center,等。
window.history物件
歷史記錄,通過歷史記錄可以操作頁面前進或者後退
window.history.back();後退
window.history.forward();前進
window.history.go(n); n是正數代表前進n個頁面,n是負數代表後退n個頁面。
window.location物件
location位址列
頁面的重定向
function tiao(){
window.location.href="index.html";
}
var s = window.location.href;獲取當前頁面的地址
window.location.href="http://www.baidu.com";修改頁面地址,會跳轉頁面
window.location.hostname: 主機名,域名,網站名,可用變數接收
window.location.pathname: 路徑名,可用變數接收
window.status物件
status狀態列,可以給狀態列新增要顯示的文字
window.status="要在狀態列顯示的內容";設定狀態列文字
window.showModelessDialog("url","向目標對話方塊傳的值","視窗特徵引數")開啟非模組對話方塊,不用關閉可以操作後面。