(function () { function getUTMParams() { const params = {}; const queryString = window.location.search.substring(1); const regex = /([^&=]+)=([^&]*)/g; let match; while ((match = regex.exec(queryString))) { const key = decodeURIComponent(match[1]); const value = decodeURIComponent(match[2]); if (key.startsWith("utm_")) { params[key] = value; } } return params; } function sendTrackingData(data) { // navigator.sendBeacon("http://localhost:8787/event", JSON.stringify(data)); navigator.sendBeacon("https://a.sourcegeek.com/event", JSON.stringify(data)); } const trackingData = { url: window.location.href, referrer: document.referrer, utm_params: getUTMParams(), timestamp: new Date().toISOString(), }; sendTrackingData({ ...trackingData, event: "page_view" }); setInterval(() => { sendTrackingData({ ...trackingData, event: "ping" }); }, 3000); })();