summaryrefslogtreecommitdiffstats
path: root/assets/js/ga.js
diff options
context:
space:
mode:
authorSerghei Iakovlev <egrep@protonmail.ch>2022-06-19 00:39:44 +0200
committerSerghei Iakovlev <egrep@protonmail.ch>2022-06-19 00:39:44 +0200
commitd29e4da3e683a4c17c609ace5dd92cd2126b1ed9 (patch)
tree06df5db71b8cc5ca0817888924c92ce35b36d36f /assets/js/ga.js
parent755dd6c4a34474147564de2272a210cc2cd5f06a (diff)
downloadgohugo-theme-ed-d29e4da3e683a4c17c609ace5dd92cd2126b1ed9.tar.gz
Add support for Global site tag (gtag.js) - Google Analytics
Diffstat (limited to 'assets/js/ga.js')
-rw-r--r--assets/js/ga.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/assets/js/ga.js b/assets/js/ga.js
new file mode 100644
index 0000000..2f855c3
--- /dev/null
+++ b/assets/js/ga.js
@@ -0,0 +1,51 @@
+function isDoNotTrackEnabled() {
+ if (typeof window === 'undefined') return false
+ const {doNotTrack, navigator} = window
+
+ // Do Not Track Settings across browsers
+ const dnt = (doNotTrack || navigator.doNotTrack || navigator.msDoNotTrack)
+
+ if (!dnt) return false
+
+ return dnt === true ||
+ dnt === 1 ||
+ dnt === 'yes' ||
+ (typeof dnt === 'string' && dnt.charAt(0) === '1');
+}
+
+if (isDoNotTrackEnabled()) {
+ // Skip analytics for users with Do Not Track enabled
+ console.info('[TRACKING]: Respecting DNT with respect to analytics...')
+} else {
+ // Known DNT values not set, so we will assume it's off.
+ const data = JSON.parse(document.getElementById('ed-data').innerHTML)
+
+ if (typeof data !== 'undefined' && data.analytics_code) {
+ (function () {
+ // New Google Site Tag (gtag.js) tagging/analytics framework
+ // See: https://developers.google.com/gtagjs
+ const base_url = 'https://www.googletagmanager.com'
+ let script = document.createElement("script");
+
+ script.src = base_url + "/gtag/js?id=" + data.analytics_code;
+ script.type = "text/javascript";
+ script.async = true;
+
+ document.getElementsByTagName("head")[0].appendChild(script);
+ }())
+
+ window.dataLayer = window.dataLayer || [];
+
+ function gtag() {
+ dataLayer.push(arguments);
+ }
+
+ gtag('js', new Date());
+
+ // Setup the project analytics code and send a pageview
+ gtag('config', data.analytics_code, {
+ 'anonymize_ip': true,
+ 'cookie_expires': 30 * 24 * 60 * 60 // 30 days
+ })
+ }
+}