showModalDialog 模态对话框
通过父窗口打开子窗口
<html> <head> <TITLE>模态对话框</TITLE> <script language=javaScript> function openDialog(){ var obj = {"name":"huangbiao"}; var result = window.showModalDialog("email.html",obj,"dialogHeight:200px;dialogWidth:200px;edge:sunken"); alert("您传递的参数为:" + result) } </script> <body> <button id="dialog" onclick="openDialog()">打开对话框</button> </body> </html>
子窗口的代码
<html> <head> <TITLE>子窗口</TITLE> <base target="_self"> <script language=javaScript> //得到父窗口传递过来的参数 var abc = window.dialogArguments; alert(abc.name); //传递给父窗口的参数值 window.returnValue = "biaobiao"; function closeWindow(){ window.close(); } </script> <link rel="stylesheet" href="../style.css"></head> <body> <div> <form> 收件人:<input type="text"> 主题:<input type="text"> 内容:<textarea></textarea> </form> <a href="http://www.cnblogs.com/hynxy0115/archive/2009/03/18/1415654.html">href</a> <input type="button" onclick="closeWindow()" value="关闭窗口"/> </div> </body> </html>
一、showModalDialog和showModelessDialog有什么不同?
showModalDialog:被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。类似alert的运行效果。
showModelessDialog:被打开后,用户可以随机切换输入焦点。对主窗口没有任何影响
备注:如果是想得到模态对话框返回过来的参数值,就要使用showModalDialog等待返回的结果,如果使用另外一个则不会等待结果直接向下运行,这样容易引起逻辑错误
二、怎样才让在showModalDialog和showModelessDialog的超连接不弹出新窗口?
在被打开的网页里加上<base target="_self">就可以了。这句话一般是放在<html>和<body>之间的。
三、怎样才刷新showModalDialog和showModelessDialog里的内容?
在showModalDialog和showModelessDialog里是不能按F5刷新的,又不能弹出菜单。这个只能依靠javascript了,以下是相关代码:
<body onkeydown="if (event.keyCode==116){reload.click()}">
<a id="reload" href="filename.htm" style="display:none">reload...</a>
将filename.htm替换成网页的名字然后将它放到你打开的网页里,按F5就可以刷新了,注意,这个要配合<base target="_self">使用,不然你按下F5会弹出新窗口的。
四、如何用javascript关掉showModalDialog(或showModelessDialog)打开的窗口。
<input type="button" value="关闭" onclick="window.close()">
也要配合<base target="_self">,不然会打开一个新的IE窗口,然后再关掉的。