由於項目要用到彈出窗口,或者叫做模擬窗口,這段時間就研究了下,解決方案很多,比如,window.open();window.showDialog();用層模擬,框架+DIV+Javascript....
用window.open();這種方法的缺點是,會被浏覽器或者相關軟件給屏蔽掉。用層模擬的話,如果想實現較復雜點的窗口,就比較困難,第三種方法是綜合了所有的網頁制作知識,可以提供個很好的解決方案。但是,第三種實現起來,對於Javascript知識不夠的人來說,很難完成。前段時間在網上逛的時候,發現了個好的解決方案:GreyBox.經過反復研究,發現,GreyBox幾乎可以完成所有的彈出窗口(但是,好像對框架中的框架不太支持)。為了方便使用,我把GreyBox封裝為一個控件。現在把用法貼出來:
1.涉及到的文件:GreyBox.dll(動態庫) greyboxloader.aspx,greyboxloader.ASPx.cs (加載網頁的框架),gb_styles.CSS(樣式表)
2.添加文件:
① 添加引用GreyBox.dll 到Bin文件夾
② 添加greyboxloader.aspx,greyboxloader.ASPx.cs到項目的根目錄.
③ 添加gb_styles.css文件到imges/CSS/ 文件夾下
3.調用方法:
①引用控件:
在頁面頂部加入代碼:
在
之間添加代碼:②加載CSS文件:
HtmlLink myHtmlLink = new HtmlLink();
myHtmlLink.Href = "images/css/gb_styles.CSS";
myHtmlLink.Attributes.Add("rel", "stylesheet");
myHtmlLink.Attributes.Add("type", "text/CSS");
Page.Header.Controls.Add(myHtmlLink);
③注冊彈出新窗口事件(以Button為例):
this.Button1.Attributes.Add("onclick", "return GB_showCenter('修改密碼', 'echangepw.ASPx',200,390)");
GB_showCenter('title','url',height,width)方法的參數說明:
title:彈出窗口的標題
url:網址或者網頁文件名
height:彈出窗口的高度
width:彈出窗口的寬度
這樣,點擊Button1就可以彈出一個窗口了.
4.方法:
關閉窗口:
Response.Write("< script language=Javascript>parent.parent.GB_hide();");
提交並關閉窗口:
有框架的情況(IFRAME)
Response.Write("< script language=Javascript>parent.parent.document.forms(0).submit();");
無框架的情況
Response.Write("< script language=Javascript>top.window.document.forms(0).submit();");
說明:Greybox的所有資源歸其原作者所有,感興趣的可以去其網站看。上面有詳盡的介紹,當然,也可以和我討論,我很願意和大家分享。
ps:上個月底發布了代碼生成器,本來是准備盡快給朋友們上傳源碼的,但是,由於最近在趕一個項目,再加上那個代碼生成器給同事用後,發現了一些BUG和提出了一些需求,我准備重寫。