showModalDialog()子窗口刷新父窗口


今天再次使用showModalDialog(),發現了兩個問題,一是子窗口如何刷新父窗口,二是窗口的參數問題。

1 子窗口刷新父窗口

   如果是window.open();問題就好辦,直接用window.opener.location.reload();就搞定了

   但是如果是window.showModalDialog(),它里面是沒有window.opener的,不能用opener引用父窗口,直接調用用報錯。

總結了一下有兩種方法可以解決,一是在子窗口中刷新父窗口,二是在子窗口關閉后,父窗口自己刷新。

 (1)在子窗口中刷新父窗口

       父窗口: 因為子窗口不能直接引用父窗口,所以需要父窗口主動傳遞指針變量,就是window.showModalDialog的第二個參數,參數為“window”,意思就是把父窗口對象當做參數傳遞給子窗口,

示例:

var returnValue = window.showModalDialog(url,window,"dialogHeight=350px;dialogWidth=400px; center=yes;status=no;scroll=no;resizable=yes");

注意:window不要加引號。

子窗口:執行完操作后調用window.dialogArguments.location.reload();

注意:是window.dialogArguments,而不是window.dialogArgument,之前一直測試通過不了,就是這個屬性寫錯了

window.dialogArguments 即為父窗口window對象的引用,獲得父窗口的引用,就可以操作父窗口了,做什么都行,

但是調用window.dialogArguments.location.reload();父頁面好像並沒有刷新,原因未知??!!

(2)在父窗口中刷新自己

這個實現比較簡單,在子窗口關閉后,父窗口自己刷新,例如:

var returnValue = window.showModalDialog(url,window,"dialogHeight=350px;dialogWidth=400px;center=yes;status=no;scroll=no;resizable=yes");
        if(returnValue == "true"){
            window.location.reload();
        }

還有一種方法就是在子窗口中調用父窗口的一個方法,該方法自己刷新本頁面(父窗口);

子窗口:window.dialogArguments.reloadPage();window.close;

父窗口: function reloadPage(){window.location.reload();}

2 showModalDialog參數問題:

       vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures]);

第三個參數用來描述對話框的外觀等信息,我調整了半天都不見效,后來發現原因出現在兩個地方:

(1)長度,寬度,都是用  dialogHeight,  dialogWidth表示,而不是heigh,width,和window.open()是不同的。

(2)多個參數用";"分割,而不是用","。

我就是因為粗心,在這兩個地方浪費了很多時間,大家不要重蹈覆轍,要信心,把參數記牢!

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM