打开子窗口有两种方式,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啦,当然通过这种方式也可以轻松实现两者的双向交互。