1、打開彈出窗口時把 window 作爲第二個參數傳入。
var result = window.showModalDialog(url, window, "dialogWidth=" + width + "px;dialogHeight=" + height + "px;resizable:yes;")
if (typeof (result) == 'undefined') {
result = window.ReturnValue;
}
return result;
2、在彈出窗口中,執行如下JS,以接收傳入的window
if (typeof (window.opener) == 'undefined') window.opener = window.dialogArguments;
3、彈出窗口關閉前,調用如下JS賦返回值
window.retureValue = vals;
if (window.opener && window.opener != null)
window.opener.ReturnValue = vals;
window.close();
博客園davidyang78原創,轉載請保留此信息
原理探討:
chrome下,標準方法,在彈出頁面不回發的情況下,是可以返回值的。 有回發則不能正常返回值。此方法可以解決。
IE下標準方法,有時不明原因不能正確返回值,此方法可解決。
FF未詳細測試,應該問題不大。
PS1: chrome的模態彈出窗體比IE友好的多。
PS2:模態彈出窗體是一種很好理解和簡單的模式,使各頁面偶合不用太緊密,有利於頁面重用。