於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>
你在本地建三个文件,把代码贴上去试一试吧,希望能够帮助你。。。