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內容的非模態對...