模态对话框(Modal
Dialog),是一种会block顺序执行程序的窗口,比如C#里的MessageBox.Show(this,...),JavaScript里的alert(...)、confirm(...)等,是我们最常见的模态对话框。不关闭这种对话框程序的当前线程就被一直挂起了,这种窗口的特性最适合用来做条件分支的判断提示和Wizard窗口。
在IE里面,我们可以通过window对象的showModalDialog方法十分方便的开启一个模态对话框。可是这个从IE4.0就开始支持的feature,居然还有一堆一堆的问题:(

。到这里我还以为找到模态对话框的bug了,回家后决定把这个bug再研究一下,结果却很顺利的从模态窗口里调用XMLHTTP对象获得了服务器上的数据
。真是郁闷!!!
明天再找个机器来试试,看看到底还有没有问题。
如果你对JS也感兴趣,不妨也来试验一下,看看到底是我机器环境本身的原因,还是这是一个不确定的bug。
测试代码如下:
<html>
<head>
<title>Caller</title>
</head>
<body>
<button onclick="OpenDialog()">Open Dialog
</button>
<script language="javascript">
function OpenDialog()
{
var dlg = window.showModalDialog('Callee.htm');
}
</script>
</body>
</html>
存为:Caller.htm
<title>Callee</title>
<table border="0" width="100%" height="100%">
<tr>
<td align="center" valign="middle">
<button onclick="GetData()" ID="Button1">Open Dialog
</button></td>
</tr>
</table>
function GetData()
var url = 'http://www.google.com';
__XmlHttpPool__.GetRemoteData(url, alert);
</script>
存为:Callee.htm
欢迎回复您的实验结果,同时也欢迎讨论模态窗口的其它问题及解决方法。
本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。