showModalDialog 子視窗重新整理父視窗

2021-08-31 02:43:13 字數 1421 閱讀 3858

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.dialogargument.location.reload();

網上說只呼叫這一句就可以了,但我試了不行,具體原因沒查到,自己猜測要這麼用,父視窗必須是iframe. 如果父視窗不是iframe,想要實現這個功能,還可以在body中加入"onunload=window.dialogargument.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.dialogargument.reloadpage();window.close;

父視窗: function reloadpage()

但是我試驗後不行,能呼叫到這個方法,但是就是不重新整理,原因不詳。

2 showmodaldialog引數問題:

vreturnvalue = window.showmodaldialog(surl [, varguments] [,sfeatures]);

第三個引數用來描述對話方塊的外觀等資訊,我調整了半天都不見效,後來發現原因出現在兩個地方:

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

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

showModalDialog引數詳解

showmodaldialog ie 4 支援 showmodelessdialog ie 5 支援 window.showmodaldialog 方法用來建立乙個顯示html內容的模態對話方塊。window.showmodelessdialog 方法用來建立乙個顯示html內容的非模態對話方塊。使...

showModalDialog相關問題

最近大量地用到了模式視窗,也遇到了不少問題,特總結於此,方便自己日後查閱,若能幫到他人,那就更好了。一 基本使用 語法 vreturnvalue window.showmodaldialog surl varguments sfeatures 引數說明 surl 指定對話方塊要顯示的url。varg...

showModalDialog引數詳解

基本介紹 showmodaldialog ie 4 支援 showmodelessdialog ie 5 支援 window.showmodaldialog 方法用來建立乙個顯示html內容的模態對話方塊。window.showmodelessdialog 方法用來建立乙個顯示html內容的非模態對...