window.showModalDialog的简单实践

时间:2025-05-10 15:36:20

Super.jsp - 父窗口

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath %>Super.jsp"> <title>Super.jsp</title>
</head> <script type="text/javascript">
function showLanguage()
{
var currObj = new Object();
var langObj = document.getElementById("language_id");
currObj.language = langObj.value;
var subReturn = window.showModalDialog("Sub.jsp",currObj,"dialogWidth:300px;dialogHeight:300px;"); //防止返回的值为空字符串场景
if((null == subReturn) || (typeof subReturn == "undefined"))
{
return;
} langObj.value = subReturn;
} function reset()
{
document.getElementById("language_id").value = "";
} function setLang(sub_lang)
{
document.getElementById("language_id").value = sub_lang;
}
</script> <body>
<div align="center" style="font-size: 18px;">
当前语言:
<input type="text" name="select_lang" id="language_id" readonly="readonly">
&nbsp;&nbsp;
<input type="button" name="selectLanguage" value="语 言" onclick="showLanguage()">
<input type="button" name="resetLanguage" value="重 置" onclick="reset()">
</div>
</body>
</html>

Sub.jsp - 子窗口

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath %>Sub.jsp" target="_self"> <title>Sub.jsp</title>
</head> <script type="text/javascript">
function selectLanguage()
{
var radio_names = document.getElementsByName("radio_name");
if((null == radio_names) || (typeof radio_names == "undefined"))
{
alert("Pls choose a language !!!");
return;
} var seleVal = ""; for(var i=0; i<radio_names.length; i++)
{
if(radio_names[i].checked == true)
{
seleVal = radio_names[i].value;
break;
}
} window.returnValue = seleVal; window.close();
} function selectLanguage2()
{
var radio_names = document.getElementsByName("radio_name");
if((null == radio_names) || (typeof radio_names == "undefined"))
{
alert("Pls choose a language !!!");
return;
} var seleVal = ""; for(var i=0; i<radio_names.length; i++)
{
if(radio_names[i].checked == true)
{
seleVal = radio_names[i].value;
break;
}
} //获取父窗口对象
var opener = window.opener;
//调用父窗口函数
opener.setLang(seleVal);
//window.opener.document.getElementById("language_id").value = seleVal;
window.close();
}
</script> <body>
<form id="form1">
<div>
<table style="border: 2px solid #CCCCCC; width: 100%" >
<thead>
<tr>
<th>选择</th><th>语言</th><th>类型</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="radio" name="radio_name" value="java"></td>
<td><div>Java</div></td>
<td><div>必选</div></td>
</tr>
<tr>
<td><input type="radio" name="radio_name" value="js"></td>
<td><div>JavaScript</div></td>
<td><div>可选</div></td>
</tr>
</tbody>
</table>
</br>
<input type="button" id="Button1" value="确 认(方式一)" onclick="selectLanguage()" />
<input type="button" id="Button1" value="确 认(方式二)" onclick="selectLanguage2()" />
</div>
</form>
</body> <script type="text/javascript">
var parentVals = window.dialogArguments;
var parentLanguage = parentVals.language;
var radio_names = document.getElementsByName("radio_name");
for(var i=0; i<radio_names.length; i++)
{
if(radio_names[i].value == parentLanguage)
{
radio_names[i].checked = true;
break;
}
}
</script>
</html>

预览效果

window.showModalDialog的简单实践