window的onunload事件中傳送ajax(網路)請求,需要使用同步請求
阿新 • • 發佈:2019-02-10
有時候,有這樣的需求,統計一個頁面的停留時間,那麼我們需要在頁面開始的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 }); }; }