今天在写个页面弹出窗口的时候,需要使用struts中的action,本来想使用showModalDialog打开有模窗口,保持子窗口始终在最前面,发现,操作父窗口的window对象无法传递子页面进行操作,后来想用open打开操作,结果发现使用保持不了子窗口再最前面。
网络一搜还得感谢“yjavaeye上的”这位“
”朋友。
测试成功:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>test</title>
<script type="text/javascript">
function openTestAction(){
var testId = document.getElementById("testId").value;
var testName = document.getElementById("testName").value;
var newWin = window.open("TestAction.do?testId="+testId+"&testName="+testName,'newWin','height=200,width=400,top=200,left=200,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no,status=no');
window.οnfοcus=function (){
if(newWin && !newWin.closed){
newWin.focus();
}
};
window.document.οnfοcus=function (){
if(newWin && !newWin.closed){
newWin.focus();
}
};
window.document.οnclick=function (){
if(newWin && !newWin.closed){
newWin.focus();
}
};
window.document.οndblclick=function (){
if(newWin && !newWin.closed){
newWin.focus();
}
};
}
</script>
</head>
<body>
<table>
<tr>
<td>
<input id="testId" name="testId" value="${param.testId}"/>
<input id="testName" name="testName" value="${param.testName}"/>
<input type="button" value="openTest" οnclick="openTestAction();"/>
</td>
</tr>
</table>
</body>
</html>
子页面:<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>success</title>
<script type="text/javascript">
function closeCur(i) {/*===通过变量区别单选框后面的文本框的内容===*/
//alert('双击事件');
//alert(i);
var oRadio=document.getElementsByName("selectFlag");
alert('总共有'+oRadio.length+'个按钮');
//========可能需要对js空对象一些判断=======
for(var i=0;i<oRadio.length;i++){
if(oRadio[i].checked){
alert('您选中了第'+(i+1)+'个');
var testIdVal = document.getElementById('testId_'+i).value;//当前页面值
var testNameVal = document.getElementById('testId_'+i).value;
window.opener.document.getElementById("testId").value = testIdVal;//父窗口是传统的属性值只有一份
window.opener.document.getElementById("testName").value = testNameVal;
}
}
close();
}
</script>
</head>
<body οnblur="focus();">
<form>
<table>
<c:set var="i" value="0" />
<%
for (int j=0; j<5; j++){
%>
<tr>
<td><input type="radio" name="selectFlag" onDblClick="closeCur('${i}')"></td>
<td><input id="testId_${i}" name="testId" value="${testId}_${i}"/></td>
<td><input id="testName_${i}" name="testName" value="${testName}_${i}"/></td>
</tr>
<c:set var="i" value="${i+1}"/>
<%
}
%>
</table>
</form>
</body>
</html>