最近大量地用到了模式視窗,也遇到了不少問題,特總結於此,方便自己日後查閱,若能幫到他人,那就更好了。
一、基本使用
語法: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 方法用來建立乙個顯示...