window.showModalDialog操作父窗口
Firefox 3.0 已经支持window.showModalDialog了,平时很多地方用模态对话框还是很方便的,
今天写了一下在调用窗体的时候,传一个CallBack过去,让子窗口可以调用父窗口的方法。
父窗口:
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
function ShowDialog()
{
var param = "dialogWidth:400px;dialogHeight:300px;scroll:no;status:no;resizable:no";
return window.showModalDialog("pop.html", GetResult, param);
}
function GetResult(ret)
{
alert(ret);
document.getElementById("tbTest").value = ret;
}
//-->
</SCRIPT>
<input type="button" value="Pop" onclick="ShowDialog();" />
<input type="text" id="tbTest" />
</BODY>
</HTML>
子窗口:
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
function SetValue()
{
var callBack = window.dialogArguments;
if (callBack != undefined && callBack != null)
{
callBack(Math.random());
}
}
//-->
</SCRIPT>
<input type="button" value="SetValue" onclick="SetValue();" />
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
function ShowDialog()
{
var param = "dialogWidth:400px;dialogHeight:300px;scroll:no;status:no;resizable:no";
return window.showModalDialog("pop.html", GetResult, param);
}
function GetResult(ret)
{
alert(ret);
document.getElementById("tbTest").value = ret;
}
//-->
</SCRIPT>
<input type="button" value="Pop" onclick="ShowDialog();" />
<input type="text" id="tbTest" />
</BODY>
</HTML>
子窗口:
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
function SetValue()
{
var callBack = window.dialogArguments;
if (callBack != undefined && callBack != null)
{
callBack(Math.random());
}
}
//-->
</SCRIPT>
<input type="button" value="SetValue" onclick="SetValue();" />
</BODY>
</HTML>
子窗口可以调用父窗口的alert,以及js赋值等,当然就可以ajax了。
不过貌似不能让父窗口提交。这点倒是有点麻烦。还好我现在是用ajax在处理父窗口的数据提交。
感觉还有点用。
感谢L.S的鼓励,我都不知我去看写过blog,那今年就从最近开始多写一些吧。