Skip to content

Commit 30ec648

Browse files
committed
Add referrer and query params to events
1 parent 1fe79df commit 30ec648

File tree

1 file changed

+31
-11
lines changed

1 file changed

+31
-11
lines changed

src/default.js

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
var platformText = "platform";
6161
var platformVersionText = "platformVersion";
6262
var docsUrl = "https://docs.simpleanalytics.com";
63+
var pages = 0;
6364
var isBotAgent =
6465
/(bot|spider|crawl)/i.test(userAgent) && !/(cubot)/i.test(userAgent);
6566
/** if screen **/
@@ -582,12 +583,17 @@
582583
var page = {};
583584
var lastSendPath;
584585

586+
var getReferrer = function () {
587+
return (
588+
(doc.referrer || "")
589+
.replace(locationHostname, definedHostname)
590+
.replace(/^https?:\/\/((m|l|w{2,3}([0-9]+)?)\.)?([^?#]+)(.*)$/, "$4")
591+
.replace(/^([^/]+)$/, "$1") || undefinedVar
592+
);
593+
};
594+
585595
// We don't want to end up with sensitive data so we clean the referrer URL
586-
var referrer =
587-
(doc.referrer || "")
588-
.replace(locationHostname, definedHostname)
589-
.replace(/^https?:\/\/((m|l|w{2,3}([0-9]+)?)\.)?([^?#]+)(.*)$/, "$4")
590-
.replace(/^([^/]+)$/, "$1") || undefinedVar;
596+
var referrer = getReferrer();
591597

592598
/////////////////////
593599
// TIME ON PAGE AND SCROLLED LOGIC
@@ -724,6 +730,8 @@
724730
return path;
725731
};
726732

733+
var previousReferrer;
734+
727735
// Send page view and append data to it
728736
var sendPageView = function (
729737
isPushState,
@@ -747,9 +755,14 @@
747755
/** endif **/
748756
});
749757

758+
previousReferrer = referrer;
750759
referrer = currentPage;
760+
761+
pages++;
751762
};
752763

764+
var sameSite, userNavigated;
765+
753766
var pageview = function (isPushState, pathOverwrite, metadata) {
754767
// Obfuscate personal data in URL by dropping the search and hash
755768
var path = getPath(pathOverwrite);
@@ -799,7 +812,7 @@
799812
warn(error);
800813
}
801814

802-
var userNavigated = performaceEntryType
815+
userNavigated = performaceEntryType
803816
? ["reload", "back_forward"].indexOf(performaceEntryType) > -1
804817
: // Check if back, forward or reload buttons are being use in older browsers
805818
// 1: TYPE_RELOAD, 2: TYPE_BACK_FORWARD
@@ -809,14 +822,16 @@
809822

810823
// Check if referrer is the same as current real hostname (not the defined hostname!)
811824
/** if nonuniquehostnames **/
812-
var currentReferrerHostname = doc.referrer.split(slash)[2];
813-
var sameSite = referrer
825+
var currentReferrerHostname = referrer
826+
? referrer.split(slash)[0]
827+
: undefinedVar;
828+
sameSite = referrer
814829
? nonUniqueHostnames.indexOf(currentReferrerHostname) > -1 ||
815830
currentReferrerHostname == locationHostname
816831
: falseVar;
817832
/** else **/
818-
var sameSite = referrer
819-
? doc.referrer.split(slash)[2] == locationHostname
833+
sameSite = referrer
834+
? referrer.split(slash)[0] == locationHostname
820835
: falseVar;
821836
/** endif **/
822837

@@ -987,6 +1002,7 @@
9871002
event = ("" + event).replace(/[^a-z0-9]+/gi, "_").replace(/(^_|_$)/g, "");
9881003

9891004
var eventParams = { type: eventText, event: event };
1005+
var firstPage = !userNavigated && pages < 2;
9901006

9911007
/** if metadata **/
9921008
metadata = appendMetadata(metadata, eventParams);
@@ -995,7 +1011,11 @@
9951011
if (event) {
9961012
sendData(
9971013
assign(eventParams, {
998-
query: getQueryParams(),
1014+
query: getQueryParams(!firstPage),
1015+
referrer:
1016+
(firstPage || sameSite) && collectMetricByString("r")
1017+
? previousReferrer
1018+
: null,
9991019

10001020
/** if metadata **/
10011021
metadata: stringify(metadata),

0 commit comments

Comments
 (0)