小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

子窗口和父窗口的函數(shù)或?qū)ο竽芊裣嗷ピL問(wèn)

 青格兒 2010-03-19
解決思路 
       每一個(gè)窗口其實(shí)也是一個(gè)對(duì)象,窗口內(nèi)的對(duì)象或函數(shù)就相當(dāng)于對(duì)象內(nèi)的對(duì)象或方法,問(wèn)題的關(guān)鍵是如何取得窗口對(duì)象的控制句柄,不同的窗口的控件句柄是不一樣的,下面分三種窗口討論。 
具體步驟 
1.用window.open()打開(kāi)的一般窗口。 

<script> 
var sub 
function sub_win(){ 
sub=window.open()    //sub為子窗口句柄 
//以數(shù)據(jù)流方式向子窗口輸出HTML代碼 ,sub_function()為子窗口的演示函數(shù) 
sub.document.write("<script>function sub_function(){alert(’子窗口函數(shù)’)}<\/script><button onClick=’opener.par_function()’>調(diào)用父窗口函數(shù)</button>")         
sub.document.close() //關(guān)閉子窗口的輸出流 
} 
function par_function(){//父窗口的演示函數(shù) 
alert("父窗口函數(shù)") 
} 
</script> 
<button onClick="sub_win()">打開(kāi)子窗口</button><button onClick="sub.sub_function()">調(diào)用子窗口內(nèi)函數(shù)</button> 

代碼運(yùn)行效果如圖1.5.6所示。 

圖1.5.6 在父窗口訪問(wèn)子窗口的函數(shù) 

從上面的代碼中可以發(fā)現(xiàn),父窗口調(diào)用子窗口的函數(shù)或?qū)ο?,需要在?duì)象前加上子窗口句柄(上例中的變量sub)作前綴,要訪問(wèn)子窗口中的sub_function()函數(shù),就是sub.sub_function(),反過(guò)來(lái),在子窗口中訪問(wèn)父窗口的函數(shù)或?qū)ο?,需要在前面加上opener,如opener.par_function()。 
 提示:這里只是為了演示方便,以數(shù)據(jù)流方式向子窗口中輸出HTML代碼,在實(shí)際應(yīng)用時(shí)直接在彈出頁(yè)中按上面所說(shuō)的方法調(diào)用就行了。 

2.用showModalDialog打開(kāi)的模式窗口。 

<script> 
function smdWin(){ 
win=window.showModelessDialog("demo.htm",window,"dialogWidth=200px;dialogHeight=200px;status=0;scroll=no")
} 
</script> 
<button onclick="smdWin()">打開(kāi)模式窗口</button> 
<input id="oInput"> 

demo.htm: 

<input id="sInput"> 
<button onClick="dialogArguments.oInput.value=sInput.value">傳遞文字</button> 

代碼運(yùn)行效果如圖1.5.7所示。 

圖1.5.7 在子窗口訪問(wèn)父窗口的對(duì)象 

注意:在模式對(duì)話框的父窗口中無(wú)法通過(guò)鼠標(biāo)操作控制訪問(wèn)模式對(duì)話框的對(duì)象,但可以通過(guò)設(shè)置自動(dòng)執(zhí)行的腳本來(lái)實(shí)現(xiàn)訪問(wèn),方法同無(wú)模式對(duì)話框。 

3.用showModelessDialog方法打開(kāi)的無(wú)模式窗口 

 <script> 
var win 
function smdWin(){ 
win=window.showModelessDialog("demo.htm",window,"dialogWidth=200px;dialogHeight=200px;status=0;scroll=no")
} 
</script> 
<button onclick="smdWin()">打開(kāi)無(wú)模式窗口</button> 
<input id="oInput"> 
<button onClick="win.sInput.value=oInput.value">傳遞文字</button> 

demo.htm: 

<input id="sInput"> 
<button onClick="dialogArguments.oInput.value=sInput.value">傳遞文字</button> 

代碼運(yùn)行效果: 

圖1.5.8 在父窗口中訪問(wèn)子窗口的對(duì)象 

圖1.5.9 在子窗口中訪問(wèn)父窗口的對(duì)象 

可以看出,父窗口和子窗口的數(shù)據(jù)傳遞基本方法是一樣,只是模式窗口和無(wú)模式窗口在向父窗口傳遞數(shù)據(jù)時(shí)把一般窗口的opener換成了dialogArguments 
注意:打開(kāi)模式窗口或無(wú)模式窗口的第二個(gè)參數(shù)須為window,模式窗口的父窗口無(wú)法以常規(guī)方式即時(shí)向它傳遞數(shù)據(jù),因?yàn)樗母复翱跓o(wú)法獲得焦點(diǎn)。 
技巧:父窗口要給子窗口傳遞數(shù)據(jù),還可以通過(guò)給頁(yè)地址后添加參數(shù),然后在子窗口用location.search取值的方式來(lái)完成,還可以通過(guò)打開(kāi)子窗口的第二個(gè)參數(shù)來(lái)完成,如: 

<script> 
var sub 
function sub_win(){ 
sub=window.open("","demo","width=100,height=100") 
sub.document.write("<script>alert(window.name)<\/script>")   
sub.document.close() 
} 
</script> 
<button onClick="sub_win()">打開(kāi)子窗口</button> 

圖1.5.10 通過(guò)open方法的第二個(gè)參數(shù)傳遞數(shù)據(jù) 
特別提示 
對(duì)于第一種情況,代碼運(yùn)行后,先單擊【打開(kāi)子窗口】按鈕,然后再單擊【調(diào)用子窗口內(nèi)函數(shù)】和【調(diào)用父窗口函數(shù)】按鈕看效果;第二、三種情況的代碼運(yùn)行后在模式/無(wú)模式窗口的文本框中填寫內(nèi)容后再單擊【傳遞文字】按鈕。 

特別說(shuō)明


通過(guò)本例的學(xué)習(xí),讀者朋友應(yīng)該掌握父窗口與子窗口的相互訪問(wèn)方法,還有對(duì)象的概念。
 
例如,父窗口這樣寫:
  ……
    <head>
   <script> function F() { alert("父窗口函數(shù)"); } </script> 
  </head>
  <body onload="open('2.htm')">
   <input type=hidden id=F1 onclick="F()">
  在子窗口中這樣寫:
   <input type=button value="執(zhí)行父窗口函數(shù)" onclick="javascript:window.opener.document.all.F1.click()">
  或者干脆這樣寫:<input type=button value="執(zhí)行父窗口函數(shù)2" onclick="javascript:opener.F()"> 
 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多