1. 程式人生 > >window的onunload事件中傳送ajax(網路)請求,需要使用同步請求

window的onunload事件中傳送ajax(網路)請求,需要使用同步請求

有時候,有這樣的需求,統計一個頁面的停留時間,那麼我們需要在頁面開始的onload事件,或者onpage事件中記錄一個開始時間,然後在頁面離開的時候,onunload事件中記錄結束時間,以此獲得頁面停留時間,這個時候如果需要實時的通知服務端,那麼我們就在onunload事件中傳送網路請求,可是這個onunload事件結束後,頁面資源會被釋放,那麼網路請求傳送成功與否,無法保證,所以這裡的網路請求,我們需要使用同步請求,以保證一定能傳送完成。

window.onload = function() {
    // 在頁面載入完畢或者也不用載入完畢,定義一個初始時間
    var start = new Date();
    // 在頁面關閉前,呼叫sa的track方法
    window.onunload = function() {
      var end = new Date();
      // 如果使用者一直不關閉頁面,可能出現超大值,可以根據業務需要處理,例如設定一個上限
      var duration = (end.getTime() - start.getTime()) / 1000;
      // 定義一個記錄頁面停留時間的事件pageView,並且儲存需要的屬性(停留時間和當前頁面的地址)
      sa.track('pageclose', {
        pageStayTime: duration,
        pageUrl: window.location.href
      });
    };
}