Skip to content

Commit 1fe79df

Browse files
committed
Fix collecting email clicks in Safari
1 parent b00522e commit 1fe79df

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

src/auto-events.js

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -87,31 +87,39 @@
8787
if (window[saGlobal] && window[saGlobal + "_loaded"]) {
8888
var hostname = element.hostname;
8989
var pathname = element.pathname;
90+
91+
var event;
92+
var metadata = {
93+
title: element.getAttribute("title") || undefined,
94+
};
95+
var url = element.href || undefined;
96+
9097
var useTitle = false;
9198
if (optionsLink.title && element.hasAttribute("title")) {
9299
var theTitle = element.getAttribute("title").trim();
93100
if (theTitle != "") useTitle = true;
94101
}
95102

96-
var event;
97-
98103
if (useTitle) {
99104
event = theTitle;
100105
} else {
101106
switch (type) {
102107
case "outbound": {
103108
event = hostname + (optionsLink.outboundFullUrl ? pathname : "");
109+
metadata.url = url;
104110
break;
105111
}
106112
case "download": {
107113
event = optionsLink.downloadsFullUrl
108114
? hostname + pathname
109115
: pathname.split("/").pop();
116+
metadata.url = url;
110117
break;
111118
}
112119
case "email": {
113120
var href = element.getAttribute("href");
114121
event = (href.split(":")[1] || "").split("?")[0];
122+
metadata.email = event;
115123
break;
116124
}
117125
}
@@ -122,11 +130,13 @@
122130
"_" +
123131
event.replace(/[^a-z0-9]+/gi, "_").replace(/(^_+|_+$)/g, "");
124132

125-
window[saGlobal](clean, callback);
133+
window[saGlobal](clean, metadata, callback);
126134

127135
log("collected " + clean);
128136

129-
return window.setTimeout(callback, 5000);
137+
return type === "email"
138+
? callback()
139+
: window.setTimeout(callback, 5000);
130140
} else {
131141
log(saGlobal + " is not defined", "warn");
132142
return callback();
@@ -176,8 +186,8 @@
176186

177187
link.setAttribute("onclick", onClickAttribute);
178188
} else {
179-
link.addEventListener("click", function () {
180-
saAutomatedLink(collect);
189+
link.addEventListener("click", function (element) {
190+
saAutomatedLink(element.target, collect);
181191
});
182192
}
183193
}
@@ -189,9 +199,10 @@
189199
// Loop over all links on the page
190200
for (var i = 0; i < a.length; i++) {
191201
var link = a[i];
202+
var href = link.getAttribute("href");
192203

193204
// Skip links that don't have an href
194-
if (!link.getAttribute("href")) continue;
205+
if (!href) continue;
195206

196207
// We don't want to overwrite website behaviour so we check for the onclick attribute
197208
if (!link.getAttribute("onclick") && !/^mailto:/.test(href)) {

0 commit comments

Comments
 (0)