我們知道在BS系統中如果想使用模態對話框,我們就要用.()這個方法, ()方法是用來創建一個顯示HTML內容的模態對話框,這篇文檔是用來對使用()產生模態對話框進行各種應用時產生的問題的解決方法,這篇文檔適用于asp,php,jsp等多種web技術,下面代碼的我會用jsp。
注:這篇文檔不涉及()方法的說明
需要了解的請參閱 Msdn文檔模態對話框是什么時候實例的對話框,和網友的文檔
我們先寫一個大家都很熟悉的()最簡單的使用-我們重寫一下中的alert()方法.
我們先做的事情是新建一個文件alert.jsp
代碼為:
然后在你BS系統的unit.js文件中添加下面一個方法
alert(msg)
{
var w=250;
var h=150;
=(.width-w)/2
=(.-h)/2
("alert.jsp?msg=" + msg,"",":no;: " + h +"px; : " + w +"px;:no;:no;: " + + "px; : " + + "px'");
}
這時候在引用了unit.js的頁面中用 alert()方法時模態對話框是什么時候實例的對話框,出現的模式對話框就是我們自己定義的alert.jsp對話框了.用這種方法,我們可以在我們的系統中用方法把 .alert(), .(),.() 等ie的默認的提示框都重寫一邊,這樣系統的ui風格就得到了統一,更加美觀.
用模擬alert是他最簡單的應用,而大部分的BS系統中我們使用模態對話框的目的是有一個清單頁面list.jsp,我們要雙擊list.jsp頁面的一條記錄時 彈出edit.jsp這個模態對話框,對這條記錄進行編輯,這時候問題來了,在模態對話框的文件是不能重新載入的,就是說如果我們在edit.jsp文件里把的數據post到save.jsp的時候,save.jsp不會在模態對話框里出現,而是彈出一個新的IE窗口,這顯然是不能忍受的.這個問題的解決方法是這樣的:
我們建立一個中間頁面 比如.jsp
我們想在模態對話框中打開edit.jsp的時候調用
打開.jsp頁面,并把edit.jsp的文件名通過get方法傳遞給.jsp.
在.jsp頁面里,建立一個,載入傳入的url地址edit.jsp.
這時候,不管在edit.jsp頁面怎么,怎么post,都會老老實實的呆在模態對話框里了
下面是實現的代碼:
.jsp
在unit.js里添加函數
showm(title,url,obj,w,h,obj)
{
var =(.width-w)/2
var =(.-h)/2
var url=".jsp?url=" + url + "&title=" + title;
var =":no;: " + h +"px; : " + w +"px;:no;:no;: " + + "px; : " + + "px'";
var rv=(url,obj,);
rv;
}
恩,為了方便閱讀,我把代碼中的對特殊字符的處理和一些狀態等待條去掉了,實際使用中可以依據自己使用的實際情況自己優化.
文中是我開發bs系統的對模態窗體使用的一點心得,希望能幫到大家,文中出現的錯誤,和有更優化的解決方法,請告知 謝謝