Web的桌面提醒(Popup)
大多數(shù)Windows程序都有桌面提醒(Popup)功能,如Msn Messenger,Outlook2003,F(xiàn)oxMail,SharpReader等,對(duì)用戶(hù)來(lái)說(shuō)可以非常的方便最新的信息。
在Web中借用IE5.5+的Popup,也可以實(shí)現(xiàn)類(lèi)似的功能,在CnForums1.2中新增了一種特性就是類(lèi)似于Outlook2003一樣,當(dāng)有新帖子/私人留言時(shí)就有Popup提示,如圖:現(xiàn)在就技術(shù)問(wèn)題介紹一下:
一,什么是Popup
在IE5.5+中開(kāi)始支持的Popup窗口有很多很特別的特性:
- Popup窗口可以超出瀏覽器窗口區(qū)域;
- 可以不用擔(dān)心被下拉框、flash、Iframe等這些東西遮擋;
- 即時(shí)窗口沒(méi)有焦點(diǎn),Popup窗口也可以彈出并顯示
- 一個(gè)Popup窗口打開(kāi)后,當(dāng)在它的區(qū)域以外點(diǎn)擊或者另一個(gè)Popup窗口被打開(kāi)時(shí)都會(huì)自動(dòng)關(guān)閉;
- Popup窗口是沒(méi)有焦點(diǎn)的;
- 用戶(hù)不能改變Popup窗口大小;
- Popup窗口中的內(nèi)容是不能被選擇的;
- ......
?只是Web下的Popup比起Windows中的Popup還是弱一些,但是已經(jīng)夠用了。Msdn上對(duì)Popup有非常詳細(xì)的介紹“Using the PopupObject (Internet Explorer - DHTML)”
二,怎么創(chuàng)建一個(gè)Popup
Msdn上的示例代碼:
// 創(chuàng)建Popup對(duì)象
var oPopup = window.createPopup();
// Popup對(duì)象和Window對(duì)象一樣,里面包含了一個(gè)完整的HTML文檔
var oPopupBody = oPopup.document.body;
// 在Body中插入HTML
oPopupBody.innerHTML = " Display some <B>HTML</B> here. " ;
// 設(shè)置顯示的位置、大小、參照物
oPopup.show( 100 , 100 , 200 , 50 , document.body);
![]()
三,Popup的顯示
多個(gè)Popup不能共存(Popup中創(chuàng)建Popup除外),所以web中的Popup不方便像Msn Messenger的Popup提示那樣“爬樓梯”,所以最簡(jiǎn)單有效的方法就是像Outlook2003的Popup一樣,逐個(gè)Popup提醒。
(參考WebMessenger的實(shí)現(xiàn))用Js建個(gè)隊(duì)列,將需要Popup提示的內(nèi)容都放在隊(duì)列中,用一個(gè)定時(shí)器,定時(shí)從隊(duì)列中取一個(gè)Popup,每個(gè)Popup顯示7秒。
四,怎么知道有新帖子
在Web程序中,只能通過(guò)“拉”的技術(shù),即定時(shí)向服務(wù)器發(fā)送請(qǐng)求——通過(guò)定時(shí)刷新或者是xmlhttp的Get。
我們需要有個(gè)時(shí)間戳來(lái)記錄最后請(qǐng)求時(shí)間,這樣就好根據(jù)這個(gè)時(shí)間戳來(lái)獲取時(shí)間戳之后的帖子。
如果每次根據(jù)時(shí)間戳來(lái)獲取最新帖子,服務(wù)器負(fù)荷比較大,因?yàn)椴⒉皇敲看握?qǐng)求都有新帖子的,優(yōu)化一下,再給每個(gè)在線(xiàn)用戶(hù)設(shè)置有無(wú)新帖子、有無(wú)新留言的狀態(tài)位,當(dāng)發(fā)表新帖子后更新每個(gè)人的“有無(wú)新帖”狀態(tài)位。這樣每次請(qǐng)求時(shí)先判斷有沒(méi)有新帖子,如果有新帖子,才獲取所有帖子的標(biāo)題和內(nèi)容簡(jiǎn)要。
五,具體實(shí)現(xiàn)
客戶(hù)端代碼:http://webuc.net/MyProject/Popup/popup.htm
http://webuc.net/MyProject/Popup/popup.rar
和論壇程序的結(jié)合:
demo: http://bbs.openlab.net.cn (登錄后有新帖子即提示(IE5.5+))
http://bbs.openlab.net.cn/PostAttachment.aspx?PostID=376725
posted on 2006-11-07 17:32 風(fēng)雨兼程 閱讀(541) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): Asp.net 2.0