1(function () { 2 if (window.__dcwAnalyticsLoaded) return; 3 window.__dcwAnalyticsLoaded = true; 4 5 const ENDPOINT = "/dcw-analytics-api/collect"; 6 7 function doNotTrackEnabled() { 8 return ( 9 navigator.doNotTrack === "1" || 10 window.doNotTrack === "1" || 11 navigator.globalPrivacyControl === true 12 ); 13 } 14 15 function send(eventName) { 16 if (doNotTrackEnabled()) return; 17 18 const payload = { 19 event: eventName || "pageview", 20 path: window.location.pathname + window.location.search, 21 title: document.title || "", 22 referrer: document.referrer || "", 23 language: navigator.language || "", 24 timezone: Intl.DateTimeFormat().resolvedOptions().timeZone || "", 25 screen: window.screen 26 ? `${window.screen.width}x${window.screen.height}` 27 : "" 28 }; 29 30 const body = JSON.stringify(payload); 31 32 try { 33 if (navigator.sendBeacon) { 34 const blob = new Blob([body], { type: "application/json" }); 35 navigator.sendBeacon(ENDPOINT, blob); 36 } else { 37 fetch(ENDPOINT, { 38 method: "POST", 39 headers: { "Content-Type": "application/json" }, 40 body, 41 keepalive: true 42 }).catch(function () {}); 43 } 44 } catch (error) {} 45 } 46 47 function trackPageview() { 48 send("pageview"); 49 } 50 51 trackPageview(); 52 53 const originalPushState = history.pushState; 54 const originalReplaceState = history.replaceState; 55 56 history.pushState = function () { 57 originalPushState.apply(this, arguments); 58 setTimeout(trackPageview, 0); 59 }; 60 61 history.replaceState = function () { 62 originalReplaceState.apply(this, arguments); 63 setTimeout(trackPageview, 0); 64 }; 65 66 window.addEventListener("popstate", function () { 67 setTimeout(trackPageview, 0); 68 }); 69})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.