showModalDialog相關問題

2021-05-28 00:12:30 字數 2093 閱讀 9184

最近大量地用到了模式視窗,也遇到了不少問題,特總結於此,方便自己日後查閱,若能幫到他人,那就更好了。

一、基本使用

語法:vreturnvalue = window.showmodaldialog(surl [, varguments] [,sfeatures])

引數說明:

surl:指定對話方塊要顯示的url。

varguments:向對話方塊傳遞引數,對話方塊通過window.dialogarguments來取得傳遞進來的引數(推薦傳window,方便控制父視窗)。

sfeatures:描述對話方塊的外觀等資訊(dialogheight;dialogwidth;dialogleft;dialogtop;center;help;resizable;status;scroll;)

示例://開啟乙個寬高均400px,無狀態列無幫助不能調節大小且居中螢幕的視窗 

var surl = 

'page0.aspx';  

window.showmodaldialog(surl, window, 

"dialogwidth:400px;dialogheight:400px;status:0;help:0;resizable:0;center:1;");

二、控制父視窗

定義模式視窗時,設定 window 為對話方塊引數,則在該視窗中,可通過window.dialogarguments來控制父視窗的一切元素。

示例:var oparent = window.dialogarguments; 

//獲取父視窗物件 

oparent.location.reload(); 

//父視窗重新整理,當然還可以做其他操作

三、傳值

子視窗傳值給父視窗,父視窗可以根據子視窗返回值做相應處理。與上面的方式相比,更推薦這種方式。避免出現你操作我,我操作你的混亂局面。子視窗你要做什麼,你告訴父視窗我,我做給你,而不是你直接來碰我的東西。

var val = window.showmodaldialog(

'這裡省略所有引數'); 

//開啟子視窗,接收返回值 

if (val==

"重新整理")   

window.returnvalue = 

"重新整理"; 

//可以是字元、物件等js支援的任意資料型別 

window.close(); 

//關閉視窗

四、提交表單會開啟新視窗的問題

在內加入以下**

<

base target=

"_self"

/>

五、快取問題

方式1、開啟的url後加乙個隨機引數,避免快取;

var surl = 

'page1.aspx?nocache=' + 

math.random(); 

window.showmodaldialog(surl, window, 

"dialogwidth:400px;dialogheight:400px;status:0;help:0;resizable:0;center:1;");

方式2、設定頁面不快取,在中加入以下**

六、session丟失問題

模式視窗a中open乙個新視窗b,某些環境下,視窗b會丟失session。解決方法是通過呼叫視窗a的父視窗的open來開啟視窗b。

var surl = 

'page2.aspx'; 

var owin = (typeof(window.dialogarguments) == 

"object") ? window.dialogarguments : window; 

owin.open(surl);

showModalDialog引數詳解

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

showModalDialog引數詳解

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

showModalDialog引數詳解

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