父子窗口的操作有非常多的途径可以实现,如window.open(...),window.showModalDialog(...),以及iframe中嵌套页面等都可以实现,但是根据实际使用需要选用不同的方法。
1、open子窗口:用window.opener代表父窗口的window对象,这里就不再赘述
2、iframe中子页面:用window.parent代表父窗口的window对象,同样省略
3、模态子窗口:间接通过传window对象到子窗口,然后子窗口可获得父窗口的window对象,在使用中,这种方法是传值最麻烦的一种,一般可将一个属性值或者直接传window值给新开窗口来操作。下面是在我在实际运用中的一个实例:
父窗口打开模态子窗口:
<script type="text/javascript"> function openModal(){ window.param='选择试卷'; var str=window.showModalDialog("getPaperListforExam.htm",window,"dialogTop:300px;dialogLeft:200px;status:no;help:no;scroll:yes"); var strDevide='---+++---'; if(str!=null){ str1=str.slice(0,str.indexOf(strDevide)); str2=str.slice(str.indexOf(strDevide)+strDevide.length); document.getElementById('paperId').value=str1; document.getElementById('paperName').value=str2; } } </script>
子窗口返回值:
<script type="text/javascript"> function selectPaper(var1,var2){ if(confirm('确定选择此试卷?')){ window.returnValue=var1+'---+++---'+var2; window.self.close(); } } </script>
需要注意的是:returnValue除了可以是布尔值,整型值等以外还可以是个js数组,用来传递大量数据。 showModalDialog,是模态窗口,始终获得焦点,但弹出的窗体不能刷新,此弹出的窗口 里操作button,要想不弹出新窗口,需在弹出的窗口中在<head>和</head>之间加<base target="_self">。