在JS 的window.open中,第二个参数是窗口的名字,如果存在相同名称,如果该参数指定了一个已经存在的窗口,那么 open() 方法就不再创建一个新窗口,而只是返回对指定窗口的引用。在这种情况下,features 将被忽略。
"window.location.href"、"location.href"是本页面跳转
"parent.location.href"是上一层页面跳转
"top.location.href"是最外层的页面跳转
举例说明:
如果A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,如果D中js这样写
"window.location.href"、"location.href":D页面跳转
"parent.location.href":C页面跳转
"top.location.href":A页面跳转
如果D页面中有form的话,
<form>: form提交后D页面跳转
<form target="_blank">: form提交后弹出新页面
<form target="_parent">: form提交后C页面跳转
<form target="_top"> : form提交后A页面跳转
关于页面刷新,D 页面中这样写:
"parent.location.reload();": C页面刷新 (当然,也可以使用子窗口的 opener 对象来获得父窗口的对象:window.opener.document.location.reload(); )
"top.location.reload();": A页面刷新
最后附上一个 window.open 打开窗口修改显示内容的列子
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试父窗口</title>
</head>
<body>
<textarea id="codepad" rows="30" cols="140">
<html>
<title>设置子窗口的显示内容</title>
<body>
<span id="hello">hello</span><script>alert("hi")</script>
</body>
</html>
</textarea>
<button id="run">run</button>
<script type="text/javascript">
var runCode=document.getElementById("run");
runCode.οnclick=function(){
var childWindow=window.open("","子窗口"),
code=document.getElementById("codepad").value;
childWindow.document.write(code);
childWindow.opener=null;
setTimeout(function(){childWindow.close()},5000)
}
</script>
</body>
<html>