2010-07-16 77 views
0

現在我正在使用ASPX,CSS和AJAX創建瀏覽器遊戲。 我需要知道當用戶從網站關閉瀏覽器或退出, 因爲這些情況下,例如:關閉瀏覽器/退出網站活動

  1. 如果一個玩家打開一間遊戲室,比從網站關閉瀏覽器或退出, 這個房間需要立即刪除。

  2. 2名球員在一個房間裏玩,而且他們中的一個人離開了,所以比賽結束了,剩下的人就是勝利者。 在這種情況下,我可以使用玩家輪流的倒數計時器,當倒數計時器達到0時 - 其他玩家獲勝, 但我更喜歡消息會在玩家離開房間後立即出現, 其更快,當倒計時達到0時,有兩種可能性 - 玩家離開或玩家沒有及時做出反應。

任何人都可以告訴我如何知道用戶何時關閉瀏覽器或退出我的網站? ,因爲據我所知Session對象將不會有效,因爲Session_End方法在瀏覽器關閉或用戶爲AFK後幾分鐘運行,我不能讓Session_End爲AFK玩家關閉空間因爲他們正在等待更多的玩家加入,我需要立即開始我的活動。 P:我發現這種方法,我不知道它的作用,但我不認爲它適合我的需要,因爲即使用戶從我的網站移動到另一個網站時,我也需要該事件發生。

Ext.EventManager.on(window, 'beforeunload', function() { 
    alert('cross-exit tab click AND cross-exit browser click'); 
}); 

回答

1

onbeforeunload事件在用戶離開頁面之前觸發。當用戶關閉瀏覽器或選項卡或轉到另一頁時,即使該頁面位於您自己的網站上,也會觸發此事件。

在事件處理程序中,您可以打電話回到服務器,說明會話已關閉。請注意,這必須通過麪包屑進行驗證呼叫以避免XSRF(即,玩家B欺騙玩家A結束他的會話)。

唯一需要注意的是它不適用於Opera。對於歌劇,您可以使用onunload事件,但因爲這會在瀏覽器關閉時觸發,所以在此事件處理程序中很難將任何內容發送回您的服務器。

1

處理onbeforeunload可能會工作。