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窗口,然后再关掉的。

posted @ 2011-12-24 09:27  胖鹅  阅读(189)  评论(0编辑  收藏  举报