關閉頁面那點事兒...

  近日領導對於統計相關的工做高度關注,責成相關工做人員(我)真抓實幹(加班加點),急羣衆(領導)之所急,想羣衆(領導)之所想,儘快落實相關工做...具體來講就是給咱們的C端也加上統計代碼,統計用戶打開時的來源url,當前頁面類型等;跳轉時的當前url,目標url,屏幕中心tag,當前頁面類型,頁面停留時間等;頁面關閉時當前頁面類型,屏幕中心tag,當前頁面類型等。先交代下背景:B端使用了vue框架,頁面打開、關閉、跳轉均可以很方便的監聽到;C端歷史悠久使用的是FreeMarker模板引擎,統計頁面關閉時的數據不像B端那樣,藉助vue能夠很方便的監聽到。vue

  初步想到了兩種方案:使用H5中新增的API:history.pushState或者使用window.onbeforeunload。瀏覽器

  1.history.pushState框架

  代碼以下:url

1 function pushHistory() {
2   var state = {
3     title: "title",
4     url: "#"
5   };
6   window.history.pushState(state, "title", "#");
7 }

 

  這裏的history.pushState會向window.history中push一條記錄,該記錄就是pushState的第三個參數:url。如今說一下這個pushState,它接收三個參數:狀態對象,標題,url。其中第一個參數是對象形式的狀態;第二個參數會被忽略,能夠寫成空的字符;第三個參數是url,這個url會替代當前頁面的url,若是寫成了空字符,那就是當前的地址。pushState與replaceState的區別在於前者會新增一條數據,然後者只是替換了當前url。這一點能夠在瀏覽器中看到:
這是使用window.history.replaceState時的樣子;
這是使用window.history.pushState時的樣子,兩者的區別就是可否後退,在後退時會觸發history.popState事件。
  可是想來想去這和關閉頁面沒什麼關係啊,並且是HTML5的新屬性,鑑於C 端的用戶羣體,即便知足要求也要作兼容,遂放棄。
  2.onbeforeunload
  這個就好用多了,只須要在pnbeforeunload時向服務端發請求就行了。代碼片斷以下:
1 $(window).on("beforeunload", function () {
2         util_Pc.countClose();
3         unloadFlag = true;
4     });
5     $(window).unload(function() {
6         if(!unloadFlag){
7             util_Pc.countClose();
8         }
9     });
相關文章
相關標籤/搜索