improved script

This commit is contained in:
Karl Breuer 2025-04-13 17:47:05 +02:00
parent 484426499b
commit 1c337a34c9
2 changed files with 86 additions and 1 deletions

80
script/trackscript.html Normal file
View File

@ -0,0 +1,80 @@
<!-- TRACKING SCRIPT -->
<!-- Global server config -->
<script>
const server = window.location.origin;
// const server = "https://tracking.server.com"
// This will work, but is NOT recommended as it is with third party request.
</script>
<!-- Tracking function -->
<script>
// Initialize tracking function
function tE(eventName, additionalParams = {}) {
// Create tracking data object
const data = {
event: eventName,
url: window.location.href,
ref: document.referrer,
ua: navigator.userAgent,
sw: window.screen.width,
lang: navigator.language || navigator.userLanguage,
};
// Helper function to serialize an object into URL parameters
function serializeObject(obj, prefix) {
const str = [];
for (const p in obj) {
if (obj.hasOwnProperty(p)) {
const k = prefix ? prefix + "[" + p + "]" : p;
const v = obj[p];
if (v !== null && typeof v === "object") {
str.push(serializeObject(v, k));
} else {
str.push(encodeURIComponent(k) + "=" + encodeURIComponent(v));
}
}
}
return str.join("&");
}
function sendT() {
try {
const trackingUrl = `${server}/spur?${serializeObject(data)}`;
fetch(trackingUrl, {
method: "POST",
mode: "no-cors",
cache: "no-cache",
credentials: "omit", // Don't send cookies
keepalive: true, // Ensures request completes even if page unloads
});
return true;
} catch (e) {
// Last resort fallback to image method
const pixel = new Image();
pixel.src = `${server}/pic?${serializeObject(data)}`;
return true;
}
}
return sendT();
}
// Simple Wrapper for pageLoad.
function pL() {
tE("pageLoad_" + window.location.pathname);
}
</script>
<!-- Set up page load tracking -->
<script>
document.addEventListener("DOMContentLoaded", function () {
try {
pL();
} catch (error) {
console.error("Error in DOMContentLoaded:", error);
}
});
</script>

View File

@ -120,12 +120,17 @@ function tE(eventName, additionalParams = {}) {
return sendInfo(); return sendInfo();
} }
function pL() {
tE("pageLoad_" + window.location.pathname);
}
</script> </script>
<!-- Set up page load tracking --> <!-- Set up page load tracking -->
<script> <script>
document.addEventListener("DOMContentLoaded", function() { document.addEventListener("DOMContentLoaded", function() {
try { try {
tE("pageload"); pL();
} catch (error) { } catch (error) {
console.error("Error in page load tracking:", error); console.error("Error in page load tracking:", error);
} }