window.openアナログモードウィンドウの効果


Webソフトウェア開発においては、一つのウィンドウをイジェクトする必要があり、サブウィンドウと親ウィンドウとの間で通信し、子ウィンドウは親ウィンドウをロックすることができる.比較的一般的なのはwindow.show ModalDialog()であり、この方法は多くの制限があり、例えばウィンドウ間の通信が不便で、ieの下でのみ有効である.もしwindow.openの方式を採用するならば、子ウィンドウはまた父の窓をロックすることができません.インターネットでは、父の窓口をレイヤーで遮蔽する例が多いですが、父の窓口を完全にロックできませんでした.考えた結果、ビル主は父のウィンドウをロックしてフォーカスを得ることを阻止する方法を採用しました.父のウィンドウに焦点を合わせると、子ウィンドウにフォーカスを移動します.
コードは以下の通りです
父の窓口のウェブページのparent.html
<html>
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
<title>     </title>  
<script language="javascript">  
 window.onfocus = function focus(){//     window    onfocus,                 
  if( typeof(window.childWindow)!="undefined"){//       ,           
   window.childWindow.focus();   
  }   
 }   
 function showChild(){   
  
//       ,              window childWindow      
 window.childWindow = window.open("child.html","child","width=300px,height=110px,resizable=no,scroll=no,status=no");   
  window.childWindow.focus();   
 }   
</script>  
</head>  
  
<body>  
<input name="btn_show" type="button" value="     " onclick="showChild()" />  
<input name="btn_alert" type="button" value="    " onclick="alert('    ')" />  
</body>  
</html>

 
   
サブウィンドウのウェブページchild.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>     </title>
<script language="javascript">
	window.onunload = function unload(){
		window.opener.childWindow = undefined;
	}
</script>
</head>
<body>
     !
</body>
</html>