js中模态窗口与非模态窗口

转:http://hi.baidu.com/nirvanan/blog/item/24e09e51ab25dc6b843524ae.html
下面是我做的一个实例。A.html用模态打开B.html的时候传一个person参数,B.html进行数据操作之后返回一个信息告诉A.html是否完成。代码如下:

A.html

 


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script language="JavaScript" type="text/javascript">
function test()
{
var person={"name":"hanyang","age":"23"};
var message=window.showModalDialog("B.html", person, "dialogWidth =315px;dialogHeight = 405px;help=0");
alert(message.state);
}
</script>
</head>
<body>
<input type="button" value="test" οnclick="test();">
</body>
</html>


B.html

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Untitled Document</title>
<script language="JavaScript" type="text/javascript">
function closeCurrentPage()
{
var message={"state":"error","info":"404"};
window.returnValue=message;
window.close();
}
</script>
</head>
<body>
<input type="button" value="关闭并刷新父窗体" name="btnClose" οnclick="closeCurrentPage();">
</body>
</html>


其实上面这个代码已经完全实现我今天想要的效果,当然这只是停留在客户端方面。因为有ajax技术,大家可以用JQuery框架进行服务器端的异步调用。

  我在这里想说一下,我在做这个过程中碰到的一些问题。

  1、window.opener

  window.opener得到当前窗口的父窗口,还可以说是打开当前窗口的窗口。这里有一点要说明,用window.open打开这个属性在 IE8和FireFox3中都是没有问题的。但是用window.showModalDialog打开一个新窗口,在IE7和IE8中是不支持这个属性 的。这个window.opener得到的相当于父窗口的window对象。

  2、window.parent

  window.parent是用<a href="">打开的页面支持这个属性。还有就是在iframe中也支持这个属性。

  还有上面A.html页面中代码刷新页面用window.location.href=window.location.href;而不用 window.location.reload();。我在网上搜了一下,没有搜到好的答案,只有一句话"刷新出现错误“新整理网页,必须重新传送资讯” 说句实话我不是很明白这句话的意思。但我感觉这可能和Http协议有关系。window.location.reload()相当于按了F5,或者点了刷 新按钮,而window.location.href=window.location.href则相当于重定向了一次页面。我想这两行代码在 ASP.NET是可以验证的,用Page.IsPostBack属性。如果用 window.location.reload(),Page.IsPostBack是true,而用 window.location.href=window.location.href则Page.IsPostBack是false。在这里,用 window.location.reload()是不刷新的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值