關於Javascipt 控制父子視窗的問題
請問~
在父視窗有一個動態表格如下
  ID  OPERATION
  A   modifyA
  B   modifyB
  C   modifyC
  .
  .
  .
modifyA,modifyB, modifyC, ...皆可連到一子視窗來編輯資料
我想要做到如果我案不同的modifyID, 就會產生不同的子視窗(如我按了modifyA, 之後又按了modifyB, 就會各自開一個子視窗)
但是如果我按同一個modifyID, 就會focus到已經有的子視窗(如我按了一次modifyA, 在該子視窗尚未關閉時,又再付視窗又按了一次modifyA, 此時就會focus到之前按modifyA產生出來的子視窗)
又,我每次關掉一個子視窗,父視窗都惠reload一次。
我之前用了
if (!xxx || xxx.closed) {
  xxx=window.open("aa.jsp","xxx")
} else {
  xxx.focus()
}
這樣開了第一個子視窗之後(modifyA),除非關掉,不然無法開另一個(modifyB)
我還試了
var xxx=[]
if (!xxx[id] || xxx[id].closed) {
  xxx[id] = window.open("aa.jsp", id)
} else {
  xxx[id].focus()
}
這樣在每次關掉其中一個子視窗之後,父視窗重新整理之後xxx[]就被清掉了~所以不行
然後有查到可以用cookie的方式存放, 但xxx[]裡面的每一個都是一個object, cookie似乎只能存string, 所以不知道怎麼用,
又我父視窗類似的鍵結太多了 (如modifyID, viewID, historyID...), cookie也不知道要怎麼存放
請問有更好的方式嗎?或是我之前的方式要怎麼改才能合用,還是cookie其實是可以用的...
請各位大大幫忙~謝謝
------解决方案--------------------
你好。。。我刚刚写了个简单的例子,不知道对你会不会有帮助。。。我把代码贴出来吧:
三个html页面:
父窗口:parent.html
代码如下:
<html>
	<title>父窗口</title>
	<head>
		<script>
			var xxx = [];
			var reloadSuccess = false;
			function f_open(id){
				if (!xxx[id] || xxx[id].closed) {
				 xxx[id] = window.open(id + ".html");
				} else {
				 xxx[id].focus()
				}
			}			
			function f_onload(){
				reloadSuccess = true;
				alert(123);
			}
		</script>
	</head>
	<body onload="f_onload();">
		<input value="a" type="button" onclick="f_open('a');">
		<input value="b" type="button" onclick="f_open('b');">
	</body>
</html>
子窗口a:a.html
代码如下:
<html>
	<title>a</title>
	<head>
		<script>
			var isClose = true;
			window.onbeforeunload = function(){
				window.opener.reloadSuccess = false;
			  var cpxxx = window.opener.xxx;
			  window.opener.location.reload();
			  while(isClose){
			  	if(window.opener.reloadSuccess){
			  			isClose = false;
			  	}
			  }
			  window.opener.xxx = cpxxx;
			  window.opener.xxx['a'] = false;
			}
		</script>
	</head>
	<body>
			THIS IS A.
	</body>
</html>
子窗口b:b.html
代码如下:
<html>
	<title>b</title>
	<head>
		<script>
			var isClose = true;
			window.onbeforeunload = function(){
				window.opener.reloadSuccess = false;
			  var cpxxx = window.opener.xxx;
			  window.opener.location.reload();
			  while(isClose){
			  	if(window.opener.reloadSuccess){
			  			isClose = false;
			  	}
			  }
			  window.opener.xxx = cpxxx;
			  window.opener.xxx['b'] = false;
			}
		</script>
	</head>
	<body>
			THIS IS B.
	</body>
</html>
你在本地建三个文件,把代码贴上去试一试吧,希望能够帮助你。。。