2011-06-30 14 views
3

我已經閱讀了幾十個關於SO的問題和解答,沒有人回答我的問題......他們中的大多數都圍繞着彈出一個「哦,你需要保存」的消息......這不是我的需要。如何增加「window.OnBeforeUnload」的成功來發送Ajax ping?

我在我的辦公室(不是公共網站)建立一個內部使用的應用程序,特別是我們想要登錄用戶的'退出'頁面。

所以,我有這個簡單的聲明:

window.onbeforeunload = function() { 
    $.post('LogExit.aspx'); 
} 

現在,這post將失敗的大部分時間由於瀏覽器不「要」,因爲它知道該頁面將開始一個新的請求遠離...但是,如果我添加一個令人討厭的alert框,那麼它會發送ping 100%的時間!

例子:

所以,我的問題是...我怎麼保證(或至少增加其的機會)的「LogExit.aspx」平經歷?

+1

我不相信這是可能的。我認爲一個常見的策略是使用'window.open'打開另一個窗口發送請求並關閉它自己,但彈出窗口阻止程序會阻止它。也許你可以嘗試發送一個同步的Ajax請求...? – Ryan

回答

0

不幸的是沒有100%,甚至10%「保證」的方式來實現這一目標...所以,我能夠通過使用every-10-seconds-send-a-ping函數來解決我的特殊需求。

由於我需要記錄一個人查看特定頁面的時間,所以上述解決方法有助於將其降至10秒鐘的準確度。

我真的希望未來能有更好的解決方案。

1

因爲你必須做出某種要求,並不真正關心有關的反應,你可以在此情況下,使用圖像:

window.onbeforeunload = function() { 
    var img= new Image(); 
    img.src = "LogExit.aspx"; 
    // you have to check on your server to see if it worked :) 
} 
+0

如果這可以在許多不同的瀏覽器中可靠地工作,它非常聰明。 – jfriend00