2012-07-24 35 views
3

我想讓用戶確認她想要離開我的單頁面應用程序。 ExtJS 4.1提供了onWindowUnload,我想在其中插入Confirm dialogJavascript:離開單頁面應用程序時的用戶確認

如果用戶決定繼續關閉選項卡/窗口,登錄URL的Ajax request應告訴服務器端用戶已註銷。

上述方法可行嗎?

是否可以在ExtJS MVC controller中插入onWindowUnload事件?

P.S.用戶離開單頁應用程序可以是以下任何一種:瀏覽器選項卡關閉,瀏覽器窗口關閉,瀏覽器後退按鈕,瀏覽器前進按鈕。

回答

3

您需要將偵聽器添加到窗口的onbeforeunload事件中。

它是一種特殊類型的事件處理程序,您應該仔細閱讀文檔。

MDN文檔:https://developer.mozilla.org/en/DOM/window.onbeforeunload

MS文檔:http://msdn.microsoft.com/en-us/library/ie/ms536907(v=vs.85).aspx

Ext的標準安裝的事件處理程序不工作&匕首的方式;與這個特殊的事件。

您需要使用標準addEventListenerattachEvent方法。

例子:

http://jsfiddle.net/NhLQK/9/

  • 我可以用我自己的對話框?否
  • 我可以在Firefox中顯示自己的消息嗎?否
  • 我可以使用confirm()嗎?否
  • 我可以讓它們在不同的瀏覽器中看起來一樣嗎?否
  • 我可以在用戶關閉瀏覽器之前觸發AJAX消息嗎?是的, 如果是synchronous

    Ext.Ajax.request({ 網址: '某些URL', 異步:假, 方法: 'POST' });

†它似乎工作在與分機4.1.1鉻

+0

作品!仍然不知道如何將其插入到ExtJS控制器中;必須把它放在主要的'app.js'文件中,該文件指定了['ExtJS application'](http://docs.sencha.com/ext-js/4-1/#!/api/Ext.app。應用)。 – 2012-07-24 20:48:29

+0

我曾嘗試附加一個處理程序到'卸載'事件,但Ajax請求註銷顯然不會讓它在時間上:( – 2012-07-24 21:18:39

+0

在onbeforeunload中啓動它似乎在jsfiddle中工作 – 2012-07-24 21:54:47

相關問題