window.open 與 window.showModalDialog比較
打開子窗口有兩種方式,window.open與window.showModalDialog。open形式是直接打開一個子窗口,但在ie7以及ie8上都不會直接彈出一個窗口,而是在新標簽頁中打開,這帶來兩個問題,一個是操作不方便,另一個是原本明明在open時指定了窗口大小的,但是由于是標簽頁打開,導致設(shè)置的窗口大小完全沒用,頁面中的內(nèi)容也是在新窗口中完全打開的,本來設(shè)計很好的頁面打開后完全變形了。
這個時候最好是選用dialog形式打開窗口,使用它打開窗口時有幾點需要注意的。一個是設(shè)置窗口的參數(shù),在open時設(shè)置參數(shù)一般以逗號分隔,比如
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中的等于也變成了冒號了。
最后說一下如何通過子窗口訪問父窗口中的元素,在開發(fā)過程中經(jīng)常會遇到,打開一個子窗口,在子窗口中選擇相關(guān)參數(shù),然后顯示到父窗口中,原本通過open形式打開的子窗口中,通過window.opener就可以了,如window.opener.user.value=啦啦啦。而通過dialog形式打開的窗口,如何訪問呢?很簡單,就是在寫window.showModalDialog時,將window作為該方法的第二個參數(shù),然后在子窗口中通過window.dialogArguments就可以定位到父窗口的window對象。如
var bb = window.dialogArguments;
bb.document.getElementById("user").value = 啦啦啦。就OK啦,當然通過這種方式也可以輕松實現(xiàn)兩者的雙向交互。
posted on 2009-10-05 22:59 yaoleiroyal 閱讀(1994) 評論(0) 編輯 收藏 所屬分類: javaScript