preloader
軟體工程

加入 setTimeout 函式,解決追蹤使用狀況事件完成前被轉址功能轉走

在嘗試埋設追蹤使用者操作情況事件時,常會遇到尚未完成紀錄使用者操作事件,就被網頁轉址程式碼轉走的情形。解決方法之一,是讓轉址程式碼一定要在追蹤使用事件結束後才執行,解決方法之二,是讓在非同步追蹤使用事件執行後,延遲固定時間,轉址程式碼才開始執行。本文談的是第二個方式。

同事提供簡單做法是在 javascript 程式碼中,若追蹤使用狀況 js 事件程式碼後續緊接著其他轉址程式碼,例如 window.location.href 之類的,則對其加入 js setTimeout 函式,並設定 300 ms ~ 500 ms 的延遲執行時間,以防在完成執行 js 追蹤使用情況事件前,因瀏覽器端的網路狀況不佳,導致以非同步執行方式,尚未結束發送到遠端收集追蹤事件之轉發伺服器(例如 Google Tag Manager)的 js 程式碼,現在瀏覽的網頁即被轉址程式碼轉走至其他網頁。若完成執行追蹤使用情況事件前即被轉走,後續分析資料會遺漏相關事件資料來源,導致描繪使用者輪廓和分析失真。