JS模態窗口返回值兼容問題解決辦法

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:模態彈出窗體是一種很好理解和簡單的模式,使各頁面偶合不用太緊密,有利於頁面重用。


發佈了10 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章