window.open 与 window.showModalDialog比较

转自:http://www.blogjava.net/yaoleiroyal/archive/2009/10/05/297280.html

打开子窗口有两种方式,window.open与window.showModalDialog。

open形式是直接打开一个子窗口,但在ie7以及ie8上都不会直接弹出一个窗口,而是在新标签页中打开,这带来两个问题,一个是操作不方便,另一个是原本明明在open时指定了窗口大小的,但是由于是标签页打开,导致设置的窗口大小完全没用,页面中的内容也是在新窗口中完全打开的,本来设计很好的页面打开后完全变形了。

这个时候最好是选用dialog形式打开窗口,使用它打开窗口时有几点需要注意的。一个是设置窗口的参数,在open时设置参数一般以逗号分隔,比如

window.open("Sample.htm",null,"height=200,width=400,status=yes,toolbar=no,menubar=no,location=no");而在dialog中则是以分号分隔的,另外原来的高度啊什么的在dialog中都需要加上dialog前缀,如:

window.showModalDialog("Sample.htm",window,"dialogHeight:200;dialogWidth:400;status:yes;toolbar:no;menubar:no;location:no");open中的等于也变成了冒号了。

最后说一下如何通过子窗口访问父窗口中的元素,在开发过程中经常会遇到,打开一个子窗口,在子窗口中选择相关参数,然后显示到父窗口中,原本通过open形式打开的子窗口中,通过window.opener就可以了,如window.opener.user.value=啦啦啦。而通过dialog形式打开的窗口,如何访问呢?很简单,就是在写window.showModalDialog时,将window作为该方法的第二个参数,然后在子窗口中通过window.dialogArguments就可以定位到父窗口的window对象。如
var bb =  window.dialogArguments;
bb.document.getElementById("user").value = 啦啦啦。就OK啦,当然通过这种方式也可以轻松实现两者的双向交互。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值