Merge pull request #3608 from fauzora/fix/tracker-configuration
Some checks are pending
Node.js CI / build (mysql, 18.18) (push) Waiting to run
Node.js CI / build (postgresql, 18.18) (push) Waiting to run

fix(hash): improve URL normalization and handling in tracking functions
This commit is contained in:
Mike Cao 2025-09-16 22:44:51 -07:00 committed by GitHub
commit 39c99997ce
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -38,6 +38,18 @@
/* Helper functions */ /* Helper functions */
const normalize = raw => {
if (!raw) return raw;
try {
const u = new URL(raw, location.href);
if (excludeSearch) u.search = '';
if (excludeHash) u.hash = '';
return u.toString();
} catch (e) {
return raw;
}
};
const getPayload = () => ({ const getPayload = () => ({
website, website,
screen, screen,
@ -61,11 +73,7 @@
if (!url) return; if (!url) return;
currentRef = currentUrl; currentRef = currentUrl;
currentUrl = new URL(url, location.href); currentUrl = normalize(new URL(url, location.href).toString());
if (excludeSearch) currentUrl.search = '';
if (excludeHash) currentUrl.hash = '';
currentUrl = currentUrl.toString();
if (currentUrl !== currentRef) { if (currentUrl !== currentRef) {
setTimeout(track, delayDuration); setTimeout(track, delayDuration);
@ -210,8 +218,9 @@
}; };
} }
let currentUrl = href; let currentUrl = normalize(href);
let currentRef = referrer.startsWith(origin) ? '' : referrer; let currentRef = normalize(referrer.startsWith(origin) ? '' : referrer);
let initialized = false; let initialized = false;
let disabled = false; let disabled = false;
let cache; let cache;