JavaScript 之Window對(duì)象
Posted on 2007-08-07 13:08 love1563 閱讀(1137) 評(píng)論(0) 編輯 收藏 所屬分類: JSP/Servlets/JSFwindow對(duì)象有以下方法:??
open???
close???
alert???
confirm???
prompt???
setTimeout???
clearTimeout???
setInterval???
clearInterval???
moveBy???
moveTo???
resizeBy???
resizeTo???
scrollBy???
scrollTo???
find???
back???
forward???
home???
stop???
print???
blur???
focus???
captureEvent???
enableExternalCapture???
disableExternalCapture???
handleEvent???
releaseEvent???
routeEvent???
scroll???
1. open方法??
語(yǔ)法格式:??
window.open(URL,窗口名稱,窗口風(fēng)格)??
功能:打開一個(gè)新的窗口,并在窗口中裝載指定URL地址的網(wǎng)頁(yè)。??
說(shuō)明:??
open方法用于打開一個(gè)新的瀏覽器窗口,并在新窗口中裝入一個(gè)指定的URL地址??
;???
open方法在打開一個(gè)新的瀏覽器窗口時(shí),還可以指定窗口的名稱(第二個(gè)參數(shù));???
open方法在打開一個(gè)新的瀏覽器窗口時(shí),還可以指定窗口的風(fēng)格(第三個(gè)參數(shù)),??
窗口風(fēng)格有以下選項(xiàng),這些選項(xiàng)可以多選,如果多選,各選項(xiàng)之間用逗號(hào)分隔:???
toolbar:指定窗口是否有標(biāo)準(zhǔn)工具欄。當(dāng)該選項(xiàng)的值為1或yes時(shí),表示有標(biāo)準(zhǔn)??
工具欄,當(dāng)該選項(xiàng)的值為0或no時(shí),表示沒有標(biāo)準(zhǔn)工具欄;???
location:指定窗口是否有地址工具欄,選項(xiàng)的值及含義與toolbar相同;???
directories:指定窗口是否有鏈接工具欄,選項(xiàng)的值及含義與toolbar相同;???
status:指定窗口是否有狀態(tài)欄,選項(xiàng)的值及含義與toolbar相同;???
menubar:指定窗口是否有菜單,選項(xiàng)的值及含義與toolbar相同;???
scrollbar:指定當(dāng)前窗口文檔大于窗口時(shí)是否有滾動(dòng)條,選項(xiàng)的值及含義與??
toolbar相同;???
resizable:指定窗口是否可改變大小,選項(xiàng)的值及含義與toolbar相同;???
width:以像素為單位指定窗口的寬度,已被innerWidth取代;???
height:以像素為單位指定窗口的高度,已被innerHeight取代;???
outerWidth:以像素為單位指定窗口的外部寬度;???
outerHeight:以像素為單位指定窗口的外部高度;???
left:以像素為單位指定窗口距屏幕左邊的位置;???
top:以像素為單位指定窗口距屏幕頂端的位置;???
alwaysLowered:指定窗口隱藏在所有窗口之后,選項(xiàng)的值及含義與toolbar相同??
;???
alwaysRaised:指定窗口浮在所有窗口之上,選項(xiàng)的值及含義與toolbar相同;???
dependent:指定打開的窗口為當(dāng)前窗口的一個(gè)子窗口,并隨著父窗口的關(guān)閉而??
關(guān)閉,選項(xiàng)的值及含義與toolbar相同;???
hotkeys:在沒有菜單欄的新窗口中設(shè)置安全退出的熱鍵,選項(xiàng)的值及含義與??
toolbar相同;???
innerHeight:設(shè)定窗口中文檔的像素高度;???
innerWidth:設(shè)定窗口中文檔的像素寬度;???
screenX:設(shè)定窗口距離屏幕左邊界的像素長(zhǎng)度;???
screenY:設(shè)定窗口距離屏幕上邊界的像素長(zhǎng)度;???
titleBar:指明標(biāo)題欄是否在新窗口中可見,選項(xiàng)的值及含義與toolbar相同;???
z-look:指明當(dāng)窗口被激活時(shí),不能浮在其它窗口之上,選項(xiàng)的值及含義與??
toolbar相同。???
open方法返回的是該窗口的引用。???
小技巧:該方法經(jīng)常用于在打開一個(gè)網(wǎng)頁(yè)時(shí)自動(dòng)打開另一個(gè)窗口。??
例6-2-1:編制一個(gè)小程序,它用于在打開當(dāng)前窗口時(shí)自動(dòng)打開另一個(gè)窗口,要??
求該窗沒有標(biāo)準(zhǔn)工具欄、地址欄、鏈接工具欄、菜單欄,但有狀態(tài)欄,窗口中打??
開的網(wǎng)頁(yè)地址為:http://www.dlrtvu.edu.cn。??
2. close方法??
語(yǔ)法格式:??
window.close()??
功能:close方法用于自動(dòng)關(guān)閉瀏覽器窗口。??
?? 3. alert方法??
語(yǔ)法格式:??
window.alert(提示字符串)??
功能:彈出一個(gè)警告框,在警告框內(nèi)顯示提示字符串文本。??
?? 4. confirm方法??
語(yǔ)法格式:??
window.confirm(提示字符串)??
功能:顯示一個(gè)確認(rèn)框,在確認(rèn)框內(nèi)顯示提示字符串,當(dāng)用戶單擊“確定”按鈕??
時(shí)該方法返回true,單擊“取消”時(shí)返回false。??
?? 5. prompt方法??
語(yǔ)法格式:??
window.prompt(提示字符串,缺省文本)??
功能:顯示一個(gè)輸入框,在輸入框內(nèi)顯示提示字符串,在輸入文本框顯示缺省文??
本,并等待用戶輸入,當(dāng)用戶單擊“確定”按鈕時(shí),返回用戶輸入的字符串,當(dāng)??
單擊“取消”按鈕時(shí),返回null值。??
?? 6. setTimeout方法??
語(yǔ)法格式:??
window.setTimeout(代碼字符表達(dá)式,毫秒數(shù))??
功能:定時(shí)設(shè)置,當(dāng)?shù)搅酥付ǖ暮撩霐?shù)后,自動(dòng)執(zhí)行代碼字符表達(dá)式。??
7. clearTimeout方法??
語(yǔ)法格式:??
window.clearTimeout(定時(shí)器)??
功能:取消以前的定時(shí)設(shè)置,其中的參數(shù)是用setTimeout設(shè)置時(shí)的返回值。??
?? 8. setInterval方法??
語(yǔ)法格式:??
window.setInterval(代碼字符表達(dá)式,毫秒數(shù))??
功能:設(shè)定一個(gè)時(shí)間間隔后(第二個(gè)參數(shù)),反復(fù)執(zhí)行“代碼字符表達(dá)式”的內(nèi)容??
9. clearInterval方法??
語(yǔ)法格式:??
window.clearInterval(時(shí)間間隔器)??
功能:取消setInterval設(shè)置的定時(shí)。其中的參數(shù)是setInterval方法的返回值。??
10. moveBy方法??
語(yǔ)法格式:??
window.moveBy(水平位移量,垂直位移量)??
功能:按照給定像素參數(shù)移動(dòng)指定窗口。第一個(gè)參數(shù)是窗口水平移動(dòng)的像素,第??
二個(gè)參數(shù)是窗口垂直移動(dòng)的像素。??
?? 11.moveTo方法??
語(yǔ)法格式:??
window.moveTo(x,y)??
功能:將窗口移動(dòng)到指定的指定坐標(biāo)(x,y)處。??
12. resizeBy方法??
語(yǔ)法格式:??
window.resizeBy(水平,垂直)??
功能:將當(dāng)前窗口改變指定的大小(x,y),當(dāng)x、y的值大于0時(shí)為擴(kuò)大,小于0時(shí)??
為縮小。??
13. resizeTo方法??
語(yǔ)法格式:??
window.resizeTo(水平寬度,垂直寬度)??
功能:將當(dāng)前窗口改變成(x,y)大小,x、y分別為寬度和高度。??
14. scrollBy方法??
語(yǔ)法格式:??
window.scrollBy(水平位移量,垂直位移量)??
功能:將窗口中的內(nèi)容按給定的位移量滾動(dòng)。參數(shù)為正數(shù)時(shí),正向滾動(dòng),否則反??
向滾動(dòng)。??
15. scrollTo方法??
語(yǔ)法格式:??
window.scrollTo(x,y)??
功能:將窗口中的內(nèi)容滾動(dòng)到指定位置。??
16.find方法??
語(yǔ)法格式:??
window.find()??
功能:當(dāng)觸發(fā)該方法時(shí),將彈出一個(gè)“find”(查找)對(duì)話窗口,并允許用戶在觸??
發(fā)find方法的頁(yè)面中查找一個(gè)字符串。??
注:該屬性在IE5.5及Netscape6.0中都不支持。??
17. back方法??
語(yǔ)法格式:??
window.back()??
功能:模擬用戶點(diǎn)擊瀏覽器上的“后退”按鈕,將頁(yè)面轉(zhuǎn)到瀏覽器的上一頁(yè)。??
說(shuō)明:僅當(dāng)當(dāng)前頁(yè)面存在上一頁(yè)時(shí)才能進(jìn)行該操作。??
注:IE5.5不支持該方法,Netscape6.0支持。??
18. forward方法??
語(yǔ)法格式:??
window.forward()??
功能:模擬用戶點(diǎn)擊瀏覽器上的“前進(jìn)”按鈕,將頁(yè)面轉(zhuǎn)到瀏覽器的下一頁(yè)。??
說(shuō)明:僅當(dāng)當(dāng)前頁(yè)面存在下一頁(yè)時(shí)才能進(jìn)行該操作。??
注:IE5.5不支持該方法,Netscape6.0支持。??
19. home方法??
語(yǔ)法格式:??
window.home()??
功能:模擬用戶點(diǎn)擊瀏覽器上的“主頁(yè)”按鈕,將頁(yè)面轉(zhuǎn)到指定的頁(yè)面上。??
注:IE5.5不支持該方法,Netscape6.0支持。??
20. stop方法??
語(yǔ)法格式:??
window.stop()??
功能:模擬用戶點(diǎn)擊瀏覽器上的“停止”按鈕,終止瀏覽器的下載操作。??
注:IE5.5不支持該方法,Netscape6.0支持。??
21. print方法??
語(yǔ)法格式:??
window.print()??
功能:模擬用戶點(diǎn)擊瀏覽器上的“打印”按鈕,通知瀏覽器打開打印對(duì)話框打印??
當(dāng)前頁(yè)。??
????????
22. blur方法??
語(yǔ)法格式:??
window.blur()??
功能:從窗口中移出焦點(diǎn)。當(dāng)與focus方法合用時(shí)必須小心,因?yàn)榭赡軐?dǎo)致焦點(diǎn)??
不斷移進(jìn)移出。??
23. focus方法??
語(yǔ)法格式:??
window.focus()??
功能:使窗口中得到焦點(diǎn)。當(dāng)與blur方法合用時(shí)必須小心,因?yàn)榭赡軐?dǎo)致焦點(diǎn)不??
斷移進(jìn)移出。
24. captureEvent方法??
語(yǔ)法格式:??
window.captureEvent(Event)?????????
window.captureEvent(事件1|事件2|...|事件n)??
功能:捕捉指定參數(shù)的所有事件。由于能夠捕獲哪些由本地程序自己處理的事件??
,所以程序員可以隨意定義函數(shù)來(lái)處理事件。如果有多個(gè)事件需要捕捉,各事件??
之間用管道符“|”隔開。可捕捉的事件類型如下:??
Event.ABORT???
Event.BLUR???
Event.CHANGE???
Event.CLICK???
Event.DBLCLICK???
Event.DRAGDROP???
Event.ERROR???
Event.FOCUS???
Event.KEYDOWN???
Event.KEYPRESS???
Event.KEYUP???
Event.LOAD???
Event.MOUSEDOWN???
Event.MOUSUEMOVE???
Event.MOUSEOUT???
Event.MOUSEOVER???
Event.MOUSEUP???
Event.MOVE???
Event.RESET???
Event.RESIZE???
Event.SELECT???
Event.SUBMIT???
Event.UNLOAD???
25. enableExternalCapture事件??
語(yǔ)法格式:??
window.enableExternalCapture(event)??
功能:enableExternalCapture方法用于捕捉通過(guò)參數(shù)傳入的外部事件。??
26. disableExternalCapture事件??
語(yǔ)法格式:??
window.disableExternalCapture()??
功能:取消enableExternalCapture方法的設(shè)置,終止對(duì)外部事件的捕捉。??
27. handleEvent事件??
語(yǔ)法格式:??
window.handleEvent(event)??
功能:觸發(fā)指定事件的事件處理器。??
28. releaseEvent事件??
語(yǔ)法格式:??
window.releaseEvent(event)??
window.releaseEvent(事件1|事件2|...|事件n)??
功能:釋放通過(guò)參數(shù)傳入的已被捕捉的事件,這些事件是由??
window.captureEvent方法設(shè)置的,可釋放的事件與captureEvent相同。??
29. routeEvent事件??
語(yǔ)法格式:??
window.releaseEvent(event)??
功能:把被捕捉類型的所有事件轉(zhuǎn)交給標(biāo)準(zhǔn)事件處理方法進(jìn)行處理,可轉(zhuǎn)交的事??
件與captureEvent相同。??
30 scroll事件??
語(yǔ)法格式:??
window.scroll(X坐標(biāo),Y坐標(biāo))??
功能:將窗口移動(dòng)到指定的坐標(biāo)位置。??
6-2-2 window對(duì)象的屬性??
window對(duì)象具有如下屬性:??
status???
statusbar???
statusbar.visible???
defaultstatus???
location???
locationbar???
locationbar.visible???
self???
name???
closed???
frames???
frames.length???
length???
document???
history???
innerHeight???
innerWidth???
menubar???
menubar.visible???
opener???
outerHeight???
outerWidth???
pageXOffset???
pageYOffset???
parent???
personalbar???
personalbar.visible???
scrollbar???
scrollbar.visible???
toolbar???
toolbar.visible???
top???
1. status屬性??
語(yǔ)法格式:??
window.status=字符串??
功能:設(shè)置或給出瀏覽器窗口中狀態(tài)欄的當(dāng)前顯示信息。??
小技巧:可以使用該屬性設(shè)置瀏覽器窗口狀態(tài)欄信息。??
?? 2. statusbar屬性??
語(yǔ)法格式:??
window.statusbar.屬性??
功能:statusbar屬性本身也是一個(gè)對(duì)象,用于訪問它自已的visible屬性從而確??
定狀態(tài)欄是否可見。??
注:IE5.5瀏覽器不支持該屬性。??
3. statusbar.visible屬性??
語(yǔ)法格式:??
window.statusbar.visible??
功能:檢查狀態(tài)欄是否可見,如果可見則返回true,反之返回false。??
注:IE5.5瀏覽器不支持該屬性。??
?? 4. defaultstatus屬性??
語(yǔ)法格式:??
window.defaultstatus[=字符串]??
功能:defaultstatus屬性值是瀏覽器窗中狀態(tài)欄的默認(rèn)顯示信息。??
?? 5.location屬性??
語(yǔ)法格式:??
window.location=URL??
功能:給出當(dāng)前窗口的URL信息或指定打開窗口的URL。??
?? 6. locationbar屬性??
語(yǔ)法格式:??
window.locationbar.屬性??
功能:locationbar屬性也可以看成是一個(gè)子對(duì)象,這個(gè)屬性用來(lái)獲取它自已的??
visible屬性來(lái)確定位置欄是否可見。??
到目前為止,該屬性只有一個(gè)子屬性:visible。??
注:IE5.5不支持該屬性。??
7. locationbar.visible屬性??
語(yǔ)法格式:??
window.locationbar.visible??
功能:返回位置欄是否可見,如果可見返回true,反之返回false。??
注:IE5.5不支持該屬性。??
8. self屬性??
語(yǔ)法格式:??
window.self.方法??
window.self.屬性??
功能:該屬性包含當(dāng)前窗口的標(biāo)志,利用這個(gè)屬性,可以保證在多個(gè)窗口被打開??
的情況下,正確調(diào)用當(dāng)前窗口內(nèi)的函數(shù)或?qū)傩远粫?huì)發(fā)生混亂。??
?? 9. name屬性??
語(yǔ)法格式:??
window.name=名稱??
功能:返回窗口名稱,這個(gè)名稱是由window.open()方法創(chuàng)建新窗口時(shí)給定的。??
在javascript1.0版本中,這個(gè)屬性只能用于讀取窗口名稱,而到了??
javascript1.1版本時(shí),可以用這個(gè)屬性給一個(gè)不是用window.open()方法創(chuàng)建的??
窗口指定一個(gè)名稱。??
?? 10. closed屬性??
語(yǔ)法格式:??
window.closed??
功能:closed屬性用于返回指定窗口的實(shí)例是否已經(jīng)關(guān)閉,如果關(guān)閉,返回true??
,反之返回flase。??
11. frames屬性??
語(yǔ)法格式:??
window.frames["框架名稱"]??
window.frames[數(shù)值]??
功能:frames屬性是一個(gè)數(shù)組,用來(lái)存儲(chǔ)文檔中每一個(gè)由元素創(chuàng)建的子窗口(框??
架)實(shí)例,其中的下標(biāo)即可以是次序號(hào)也可以是用FRAME元素的NAME屬性指定的名??
稱來(lái)得到并使用。??
12. frames.length屬性??
語(yǔ)法格式:??
window.frames.length??
功能:frames.length屬性用于給出文檔中子窗口(框架)實(shí)例的個(gè)數(shù)。??
13. length屬性??
語(yǔ)法格式:??
window.length??
功能:length屬性返回一個(gè)窗口內(nèi)的子窗口數(shù)目,該屬性與??
window.frame.length屬性的值相同。??
14. document屬性??
語(yǔ)法格式:??
window.document.事件??
window.document.方法??
window.document.屬性??
功能:window對(duì)象的子對(duì)象document是javascript的核心對(duì)象,在腳本中遇到??
BODY元素時(shí)創(chuàng)建一個(gè)實(shí)例。??
15. history屬性??
語(yǔ)法格式:??
window.history[數(shù)值]??
window.history.方法()??
window.history.屬性??
window對(duì)象的子對(duì)象history是javascript的核心對(duì)象之一,該屬性包含了一個(gè)??
已訪問過(guò)頁(yè)面的名稱和URL的數(shù)組。??
16. innerHeight屬性??
語(yǔ)法格式:??
window.innerHeight=數(shù)值??
功能:返回或指定瀏覽器窗口中文檔的像素高度,這個(gè)高度不包括任何工具欄和??
組成窗口的頁(yè)面修飾高度。??
注:IE5.5不支持該屬性。??
17. innerWidth屬性??
語(yǔ)法格式:??
window.innerHeight=數(shù)值??
功能:返回或指定瀏覽器窗口中文檔的像素寬度,這個(gè)寬度不包括任何工具欄和??
組成窗口的頁(yè)面修飾寬度。??
注:IE5.5不支持該屬性。??
18. menubar屬性??
語(yǔ)法格式:??
window.menubar.屬性??
功能:menubar屬性也可以看成是一個(gè)子對(duì)象,這個(gè)屬性用來(lái)獲取它自已的??
visible屬性來(lái)確定菜單欄是否可見。??
到目前為止,該屬性只有一個(gè)子屬性:visible。??
注:IE5.5不支持該屬性。??
19. menubar.visible屬性??
語(yǔ)法格式:??
window.menubar.visible??
功能:menubar.visible屬性用于返回菜單欄是否可見,如果可見返回true,反??
之返回false。??
注:IE5.5不支持該屬性。??
20. opener屬性??
語(yǔ)法格式:??
window.opener??
window.opener.方法??
window.opener.屬性??
功能:opener屬性與打開該窗口的父窗口相聯(lián)系,當(dāng)訪問子窗口中operer屬性時(shí)??
,返回的是父窗口。通過(guò)該屬性,可以使用父窗口對(duì)象中的方法和屬性。??
21. outerHeight屬性??
語(yǔ)法格式:??
window.outerHeight??
功能:outerHeight屬性用于訪問瀏覽器窗口的像素高度,該高度包括工具欄和??
裝飾邊的高度。??
注:IE5.5不支持該屬性。??
22. outerWidth屬性??
語(yǔ)法格式:??
window.outerWidth??
功能:outerWidth屬性用于訪問瀏覽器窗口的像素寬度,該寬度包括工具欄和裝??
飾邊的寬度。??
注:IE5.5不支持該屬性。??
23. pageXOffset屬性??
語(yǔ)法格式:??
window.pageXOffset=數(shù)值??
功能:指定瀏覽器窗口中文檔左上角在窗口中的當(dāng)前水平像素位置。在利用??
moveTo移動(dòng)之前,可以通過(guò)該屬性來(lái)決定是否需要移動(dòng)窗口。因?yàn)樵搶傩苑祷亓??
可見文檔相對(duì)整個(gè)頁(yè)面的當(dāng)前位置。??
注:IE5.5不支持該屬性。??
24. pageYOffset屬性??
語(yǔ)法格式:??
window.pageYOffset=數(shù)值??
功能:指定瀏覽器窗口中文檔左上角在窗口中的當(dāng)前垂直像素位置。在利用??
moveTo移動(dòng)之前,可以通過(guò)該屬性來(lái)決定是否需要移動(dòng)窗口。因?yàn)樵搶傩苑祷亓??
可見文檔相對(duì)整個(gè)頁(yè)面的當(dāng)前位置。??
注:IE5.5不支持該屬性。??
25. parent屬性??
語(yǔ)法格式:??
window.parent.frames[數(shù)值]??
window.parent.framesName??
功能:訪問各個(gè)子窗口(多框架)所在的父窗口。??
26. personalbar屬性??
語(yǔ)法格式:??
window.personalbar.屬性??
功能:personalbar屬性本身也是一個(gè)對(duì)象,用于訪問其自身的visible屬性來(lái)確??
定個(gè)人欄是否可見。??
注:IE5.5不支持該屬性。??
27. personalbar.visible屬性??
語(yǔ)法格式:??
window.personalbar.visible??
功能:確定個(gè)人欄是否可見,如果可見則返回true,反之返回false。??
注:IE5.5不支持該屬性。??
28. scrollbars屬性??
語(yǔ)法格式:??
window.scrollbars.屬性??
功能:scrollbars屬性本身也是一個(gè)對(duì)象,用于訪問其自身的visible屬性來(lái)確??
定滾動(dòng)欄是否可見。??
注:IE5.5不支持該屬性。??
29. scrollbars.visible屬性??
語(yǔ)法格式:??
window.scrollbars.visible??
功能:scrollbars.visible用于確定滾動(dòng)欄是否可見,如果可見則返回true,反??
之返回false。??
注:IE5.5不支持該屬性。??
30. toolbar屬性??
語(yǔ)法格式:??
window.toolbar.屬性??
功能:toolbar屬性本身也是一個(gè)對(duì)象,用于訪問它自已的visible屬性從而確定??
工具欄是否可見。??
注:IE5.5不支持該屬性。??
31. toolbar.visible屬性??
語(yǔ)法格式:??
window.toolbar.visible??
功能:toolbar.visible屬性用于檢查工具欄是否可見,如果可見則返回true,??
反之返回false。??
注:IE5.5不支持該屬性。??
32. top屬性??
語(yǔ)法格式:??
window.top.frames[數(shù)值]??
window.top.frameName??
window.top.方法()??
window.top.屬性??
功能:window對(duì)象的top屬性用于包含所有裝入瀏覽器的子窗口(多框架)的最頂
使用Window.open方法新建窗口
Window對(duì)象表示的是瀏覽器窗口,它有多種操作,其中一個(gè)重要的方法是open,表示新建一個(gè)窗口來(lái)打開指定頁(yè)面。例如在a.html中執(zhí)行以下語(yǔ)句:
window.open("b.html");
則新建一個(gè)窗口打開了b.html頁(yè)面,這和在a.html頁(yè)面中用一條鏈接打開頁(yè)面的效果是一樣的:
<a href="b.html" target="_blank">b</html>
但window.open對(duì)新建窗口的樣式可以有更多的控制,例如:窗口大小、是否顯示菜單欄、是否顯示滾動(dòng)條、是否顯示地址欄等等。其完整的調(diào)用語(yǔ)法如下:
window.open(url,windowName,"name1=value1[,name2=value2,[…]]");
其中:url是要打開的頁(yè)面地址;windowName表示新建窗口的名字,從而可以對(duì)其進(jìn)行控制;最后是一個(gè)用字符串表示的參數(shù)列表。每一個(gè)參數(shù)都是名稱和值對(duì)應(yīng)的形式,用逗號(hào)隔開,其中可以使用的參數(shù)如下。
??height:表示新建窗口的高度;
??width:表示新建窗口的寬度;
??left:表示新建窗口到屏幕左邊緣的距離;
??top:表示新建窗口到屏幕頂端的距離。
以上屬性的單位均為象素,例如對(duì)于800×600的分辨率,left=400則表示新窗口的左邊緣處于屏幕的正中間。其余的屬性主要是布爾型的,用yes或者1表示開啟,用no或者0表示關(guān)閉。如果是開啟,則yes或者1可省略,例如:toolbar=1等價(jià)于toolbar=yes等價(jià)于toolbar,下面分別介紹這些屬性:
??directories:是否顯示鏈接工具欄;
??location:是否顯示地址欄;
??menubar:是否顯示菜單欄;
??resizable:是否允許調(diào)整窗口大小;
??scrollbars:是否顯示滾動(dòng)條;
??status:是否顯示狀態(tài)欄;
??toolbar:是否顯示工具欄。
例如,下面的代碼將顯示一個(gè)無(wú)菜單、無(wú)工具條、無(wú)滾動(dòng)條的窗口:
window.open("test3.html","","height=200,width=300, toolbar=0,menubar=0,scrollbars=0");
使用定時(shí)器實(shí)現(xiàn)JavaScript的延期執(zhí)行或重復(fù)執(zhí)行
window對(duì)象提供了兩個(gè)方法來(lái)實(shí)現(xiàn)定時(shí)器的效果,分別是window.setTimeout()和window.setInterval。其中前者可以使一段代碼在指定時(shí)間后運(yùn)行;而后者則可以使一段代碼每過(guò)指定時(shí)間就運(yùn)行一次。它們的原型如下:
window.setTimeout(expression,milliseconds);
window.setInterval(expression,milliseconds);
其中,expression可以是用引號(hào)括起來(lái)的一段代碼,也可以是一個(gè)函數(shù)名,到了指定的時(shí)間,系統(tǒng)便會(huì)自動(dòng)調(diào)用該函數(shù),當(dāng)使用函數(shù)名作為調(diào)用句柄時(shí),不能帶有任何參數(shù);而使用字符串時(shí),則可以在其中寫入要傳遞的參數(shù)。兩個(gè)方法的第二個(gè)參數(shù)是milliseconds,表示延時(shí)或者重復(fù)執(zhí)行的毫秒數(shù)。下面分別介紹兩種方法。
1.window.setTimeout方法
該方法可以延時(shí)執(zhí)行一個(gè)函數(shù),例如:
<script language="JavaScript" type="text/javascript">
<!--
function hello(){
?alert("hello");
}
window.setTimeout(hello,5000);
//-->
</script>
這段代碼將使得頁(yè)面打開5秒鐘后顯示對(duì)話框“hello”。其中最后一句也可以寫為:
window.setTimeout("hello()",5000);
讀者可以體會(huì)它們的差別,在window.setInterval方法中也有這樣的性質(zhì)。
如果在延時(shí)期限到達(dá)之前取消延執(zhí)行,可以使用window.clearTimeout(timeoutId)方法,該方法接收一個(gè)id,表示一個(gè)定時(shí)器。這個(gè)id是由setTimeout方法返回的,例如:
<script language="JavaScript" type="text/javascript">
<!--
function hello(){
????? alert("hello");
}
var window.clearTimeout(id);
}
//-->
</script>
這樣,如果要取消顯示,只需單擊頁(yè)面任何一部分,就執(zhí)行了window.clearTimeout方法,使得超時(shí)操作被取消。
2.window.setInterval方法
該方法使得一個(gè)函數(shù)每隔固定時(shí)間被調(diào)用一次,是一個(gè)很常用的方法。如果想要取消定時(shí)執(zhí)行,和clearTimeout方法類似,可以調(diào)用window.clearInterval方法。clearInterval方法同樣接收一個(gè)setInterval方法返回的值作為參數(shù)。例如:
//定義一個(gè)反復(fù)執(zhí)行的調(diào)用
var somefunction",10000);
//取消定時(shí)執(zhí)行
window.clearInterval(id);
上面的代碼僅用于說(shuō)明怎樣取消一個(gè)定時(shí)執(zhí)行。實(shí)際上在很多場(chǎng)合都需要用到setInterval方法,下面將設(shè)計(jì)一個(gè)秒表,來(lái)介紹setInterval函數(shù)的用途:該秒表將包括兩個(gè)按鈕和一個(gè)用于顯示時(shí)間的文本框。當(dāng)單擊開始按鈕時(shí)開始計(jì)時(shí),最小單位為0.01秒,此時(shí)再次單擊按鈕則停止計(jì)時(shí),文本框顯示經(jīng)過(guò)的時(shí)間。另外一個(gè)按鈕用于將當(dāng)前時(shí)間清零。其實(shí)現(xiàn)代碼如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
</head>
<body>
<form action="somepage.asp">
<input type="text" value="0" />
<input type="button" value="開始" />
<input type="button" value="重置" />
</form>
</body>
</html>
<script language="JavaScript" type="text/javascript">
<!--
//獲取表單中的表單域
var txt=document.forms[0].elements["txt1"];
var btnStart=document.forms[0].elements["btnStart"];
var btnReset=document.forms[0].elements["btnReset"]
//定義定時(shí)器的id
var id;
//每10毫秒該值增加1
var seed=0;
btnStart.onclick=function(){
????? //根據(jù)按鈕文本來(lái)判斷當(dāng)前操作
????? if(this.value=="開始"){
????????????? //使按鈕文本變?yōu)橥V?br />????????????? this.value="停止";
????????????? //使重置按鈕不可用
????????????? btnReset.disabled=true;
????????????? //設(shè)置定時(shí)器,每0.01s跳一次
????????????? }else{
????????????? //使按鈕文本變?yōu)殚_始
????????????? this.value="開始";
????????????? //使重置按鈕可用
????????????? btnReset.disabled=false;
????????????? //取消定時(shí)
????????????? window.clearInterval(id);
????? }
}
//重置按鈕
btnReset.onclick=function(){
???? seed=0;
}
//讓秒表跳一格
function tip(){
????? seed++;
????? txt.value=seed/100;
}
//-->
</script>
給定時(shí)器調(diào)用傳遞參數(shù)
無(wú)論是window.setTimeout還是window.setInterval,在使用函數(shù)名作為調(diào)用句柄時(shí)都不能帶參數(shù),而在許多場(chǎng)合必須要帶參數(shù),這就需要想方法解決。例如對(duì)于函數(shù)hello(_name),它用于針對(duì)用戶名顯示歡迎信息:
var userName="jack";
//根據(jù)用戶名顯示歡迎信息
function hello(_name){
????? alert("hello,"+_name);
}
這時(shí),如果企圖使用以下語(yǔ)句來(lái)使hello函數(shù)延遲3秒執(zhí)行是不可行的:
window.setTimeout(hello(userName),3000);
這將使hello函數(shù)立即執(zhí)行,并將返回值作為調(diào)用句柄傳遞給setTimeout函數(shù),其結(jié)果并不是程序需要的。而使用字符串形式可以達(dá)到想要的結(jié)果:
window.setTimeout("hello(userName)",3000);
這里的字符串是一段JavaScript代碼,其中的userName表示的是變量。但這種寫法不夠直觀,而且有些場(chǎng)合必須使用函數(shù)名,下面用一個(gè)小技巧來(lái)實(shí)現(xiàn)帶參數(shù)函數(shù)的調(diào)用:
<script language="JavaScript" type="text/javascript">
<!--
var userName="jack";
//根據(jù)用戶名顯示歡迎信息
function hello(_name){
?????? alert("hello,"+_name);
}
//創(chuàng)建一個(gè)函數(shù),用于返回一個(gè)無(wú)參數(shù)函數(shù)
function _hello(_name){
?????? return function(){
???????????? hello(_name);
?????? }
}
window.setTimeout(_hello(userName),3000);
//-->
</script>
這里定義了一個(gè)函數(shù)_hello,用于接收一個(gè)參數(shù),并返回一個(gè)不帶參數(shù)的函數(shù),在這個(gè)函數(shù)內(nèi)部使用了外部函數(shù)的參數(shù),從而對(duì)其調(diào)用,不需要使用參數(shù)。在window.setTimeout函數(shù)中,使用_hello(userName)來(lái)返回一個(gè)不帶參數(shù)的函數(shù)句柄,從而實(shí)現(xiàn)了參數(shù)傳遞的功能。
使用status和defaultStatus屬性改變狀態(tài)欄信息
status和defaultStatus是window對(duì)象的屬性,用于設(shè)置狀態(tài)欄信息,語(yǔ)法為:
window.status="message";
window.defaultStatus="message";
其中status屬性就是用于設(shè)置狀態(tài)欄顯示的文本。而defaultStatus表示默認(rèn)的狀態(tài)欄信息,例如默認(rèn)情況下IE瀏覽器會(huì)顯示“完畢”,而Firefox瀏覽器則顯示“完成”。可以通過(guò)defaultStatus來(lái)改變這一信息。
使用alert、prompt和confirm語(yǔ)句與用戶進(jìn)行交互
這三個(gè)語(yǔ)句都是彈出一個(gè)對(duì)話框,來(lái)處理用戶輸入。它們都是window對(duì)象的一個(gè)方法,在實(shí)際使用時(shí),常常省略window,而直接寫成alert("hello")類似的形式。下面分別介紹:
1.a(chǎn)lert語(yǔ)句
該語(yǔ)句的原型是:
window.alert(message);
alert接收一個(gè)參數(shù),該參數(shù)將轉(zhuǎn)換為字符串直接顯示在對(duì)話框上,例如:
alert("hello,ajax");
2.prompt語(yǔ)句
該語(yǔ)句的原型是:
window.prompt(message,defaultValue);
prompt用于讓用戶輸入一個(gè)值,其中message表示提示信息,defaultValue表示顯示于文本框的初始值;函數(shù)返回用戶的輸入。對(duì)話框包括【確定】和【取消】?jī)蓚€(gè)按鈕,用戶單擊【確定】按鈕則返回文本框中的內(nèi)容,單擊【取消】則返回null。例如:
var userName=window.prompt("請(qǐng)輸入您的姓名:","");
alert("hello,"+userName);
其中prompt提示用戶輸入其姓名,使用userName變量獲取用戶輸入,并顯示歡迎信息。
3.confirm語(yǔ)句
該語(yǔ)句的原型是:
window.confirm(message);
其作用是顯示一條信息讓用戶確認(rèn),彈出的對(duì)話框包括【確定】和【取消】?jī)蓚€(gè)按鈕,如果用戶單擊【確定】,則confirm函數(shù)返回true,否則返回false。例如下面的語(yǔ)句:
if(confirm("確定刪除該記錄嗎?")){
?????? //刪除記錄的操作
}else{
?????? //不刪除記錄
}