﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-yaoleiroyal-随笔分类-javaScript</title><link>http://www.blogjava.net/yaoleiroyal/category/41965.html</link><description>天行健，君子以自强不息！地势坤，君子当厚德载物！</description><language>zh-cn</language><lastBuildDate>Mon, 05 Oct 2009 15:10:32 GMT</lastBuildDate><pubDate>Mon, 05 Oct 2009 15:10:32 GMT</pubDate><ttl>60</ttl><item><title>window.open 与 window.showModalDialog比较</title><link>http://www.blogjava.net/yaoleiroyal/archive/2009/10/05/297280.html</link><dc:creator>yaoleiroyal</dc:creator><author>yaoleiroyal</author><pubDate>Mon, 05 Oct 2009 14:59:00 GMT</pubDate><guid>http://www.blogjava.net/yaoleiroyal/archive/2009/10/05/297280.html</guid><wfw:comment>http://www.blogjava.net/yaoleiroyal/comments/297280.html</wfw:comment><comments>http://www.blogjava.net/yaoleiroyal/archive/2009/10/05/297280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yaoleiroyal/comments/commentRss/297280.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yaoleiroyal/services/trackbacks/297280.html</trackback:ping><description><![CDATA[打开子窗口有两种方式，window.open与window.showModalDialog。<br />
<br />
open形式是直接打开一个子窗口,但在ie7以及ie8上都不会直接弹出一个窗口，而是在新标签页中打开，这带来两个问题，一个是操作不方便，另一个是原本明明在open时指定了窗口大小的，但是由于是标签页打开，导致设置的窗口大小完全没用，页面中的内容也是在新窗口中完全打开的，本来设计很好的页面打开后完全变形了。<br />
<br />
这个时候最好是选用dialog形式打开窗口，使用它打开窗口时有几点需要注意的。一个是设置窗口的参数，在open时设置参数一般以逗号分隔，比如<br />
<br />
window.open("Sample.htm",null,"height=200,width=400,status=yes,toolbar=no,menubar=no,location=no");而在dialog中则是以分号分隔的，另外原来的高度啊什么的在dialog中都需要加上dialog前缀，如：<br />
<br />
window.showModalDialog("Sample.htm",window,"dialogHeight:200;dialogWidth:400;status:yes;toolbar:no;menubar:no;location:no");open中的等于也变成了冒号了。<br />
<br />
最后说一下如何通过子窗口访问父窗口中的元素，在开发过程中经常会遇到，打开一个子窗口，在子窗口中选择相关参数，然后显示到父窗口中，原本通过open形式打开的子窗口中，通过window.opener就可以了，如window.opener.user.value=啦啦啦。而通过dialog形式打开的窗口，如何访问呢？很简单，就是在写window.showModalDialog时，将window作为该方法的第二个参数，然后在子窗口中通过window.dialogArguments就可以定位到父窗口的window对象。如<br />
var bb =&nbsp; window.dialogArguments;<br />
bb.document.getElementById("user").value = 啦啦啦。就OK啦，当然通过这种方式也可以轻松实现两者的双向交互。
<img src ="http://www.blogjava.net/yaoleiroyal/aggbug/297280.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yaoleiroyal/" target="_blank">yaoleiroyal</a> 2009-10-05 22:59 <a href="http://www.blogjava.net/yaoleiroyal/archive/2009/10/05/297280.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>