您的位置:首页 > 其它

showModalDialog 模态对话框

2011-12-24 09:27 309 查看
通过父窗口打开子窗口

<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窗口,然后再关掉的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: