父子页面传值问题

 父子窗口的操作有非常多的途径可以实现,如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">。  

 

你可能感兴趣的:(JavaScript)