2013-06-18 73 views
2

我想在用戶到達我的頁面時發佈數據。這適用於Chrome和瀏覽器,也適用於Firefox,但是,在Firefox上,它奇怪的只在用戶關閉頁面時才起作用。如果他們回去,或去另一個網站(通過鍵入地址欄或任何其他網站),它不會發布數據。我的問題是,使用onbeforeunload發佈數據的正確方法是什麼?使用onbeforeunload的正確方法?

$(window).bind('beforeunload', function() { 

     $.post("track.php", { 
     async: false, 
     ip: ip, 
     referer: referer, 
     clicks: kactane2, 
     scrolls: kactane, 
     time: time, 
     refid: refid, 
     country: country, 
     }); 

}); 
+4

沒有正確的方法,如果幸運的話,Ajax調用將在瀏覽器有時間重定向之前發生,如果你不是,它不會,並且在IE中它通常會在數據發送之前重定向。 – adeneo

+0

我該怎麼做才能幸運? – user198989

+1

可能會從onbeforeunload返回字符串 –

回答

1

有沒有一個好方法,因爲這不是如何onbeforeunload是打算使用。

使用onbeforeunload的正確方法是偵聽此事件,然後卸載您可能正在使用的任何數據或資源,因爲用戶正在離開頁面。你不應該用它來嘗試開始新事物。根據HTML5 specificationshowModalDialog(),alert(),confirm()prompt()是明確不允許的,這個想法是給你一個時間清理乾淨任何事件處理程序,網絡工作人員和其他的東西。

如果定義了事件處理程序,那麼用戶可能會看到一個頁面,上面寫着"Are you sure you want to leave?",但出於安全原因,表單通常無法定製,但取決於瀏覽器。

您可能會更好地設置cookie中的數據或者可以快速完成的事情,這些操作只發生在瀏覽器中,然後在下一頁加載時查找該數據。